Virtual garment carousel

ABSTRACT

Embodiments disclosed herein include virtual apparel fitting systems configured to perform methods comprising generating a first virtual garment carousel the includes images of garments. In operation, a user scrolling through the virtual garment carousel causes a graphical user interface to display images of the garments in the carousel superposed over an image of the user, thereby enabling the user to see how the garments would look on him or her, where virtual fit points of each garment image align with virtual fit points on the image of the user.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. application Ser. No.15/083,232 titled “Virtual Apparel Fitting Systems and Methods,” filedon Mar. 28, 2016, and currently pending. U.S. application Ser. No.15/083,232 claims priority to provisional application 62/202,454 titled“Virtual Apparel Fitting Systems and Methods” filed on Aug. 7, 2015. Theentire contents of the Ser. Nos. 15/083,232 and 62/202,454 applicationsare incorporated herein by reference.

FIELD

The embodiments disclosed herein relate to the field of online shoppingof apparel, including systems and methods that allow a user to try ongarments in a virtual garment carousel to find a desired fit whenpurchasing the garment online.

BACKGROUND

As many online shoppers know, ordering products from the Internet cansometimes be a gamble. This is often true for retail clothing. Manyconsumers order garments online in what is advertised in their “typical”size only to find that the garment does not fit when it arrives. Withthe increasing number of styles and manufacturers of clothing availabletoday, standard size information is becoming an increasingly poorindicator of the likelihood that a particular-sized garment will fit.Indeed, 50-70% of returns are due to poor fit, and 72% of people who donot shop online are afraid of poor fit and look.

There have been attempts to address this problem for both consumers andretailers since online shopping became available. Despite thesecontributions, however, the current online retail clothing shoppingexperience does not provide options for size and/or style selection thatare any more reliable than its predecessor, the mail order catalogue.Thus, there remains a need in the art for technology that provides formore informed size selection during online apparel shopping.

SUMMARY

The embodiments herein involve, but are not limited to, providing avirtual garment carousel to online shoppers (users) in an Internetenvironment. The embodiments may allow users to view an image of him orherself wearing clothes via a computing device (e.g., a smartphone,tablet computer, laptop, or desktop computer), allowing for morereliable online purchasing.

Some embodiments include generating a first virtual garment carousel fora user. The first virtual garment carousel includes a plurality ofgarment images of a first type of garment. Some embodiments furtherinclude generating a first composite image of the user wearing a firstoutfit comprising a first garment and a second garment, where (i) thefirst composite image includes a user image, a first garment image, anda second garment image, (ii) the first garment image includes a garmentimage in the first virtual garment carousel, (iii) the second garmentimage includes an image of a second type of garment, and (v) the garmentfit points in the first and second garment images align withcorresponding fit points in the user image. Some embodiments may furtherinclude displaying the first composite image in a graphical userinterface.

Some embodiments further include receiving a garment change command viathe graphical user interface to change from the first garment image to anext garment image in the first virtual garment carousel, and inresponse to receiving the garment change command, generating a secondcomposite image of the user wearing a second outfit comprising thesecond garment and a third garment, where (i) the second composite imageincludes the user image, the second garment image, and a third garmentimage, (ii) the third garment image is the next garment image in thefirst virtual garment carousel, and (iii) the garment fit points of thesecond and third garment images align with corresponding fit points inthe user image. Some embodiments may further involve displaying thesecond composite image in the graphical user interface.

Further embodiments include tangible, non-transitory computer-readablemedia having stored thereon program instructions that, upon execution bya computing device, cause the computing device to perform the featuresand functions disclosed and described herein.

Some embodiments include a computing device comprising at least oneprocessor, as well as data storage and program instructions. Inoperation, the program instructions are stored in the data storage, andupon execution by the at least one processor, cause the computing device(individually or in combination with other components or systems) toperform the features and functions disclosed and described herein.

This overview is illustrative only and is not intended to be limiting.In addition to the illustrative aspects, embodiments, and featuresdescribed herein, further aspects, embodiments, and features will becomeapparent by reference to the figures and the following detaileddescription. The features and advantages of the disclosed systems andmethods, as well as other aspects, advantages, and alternatives willbecome apparent to those of ordinary skill in the art by reading thefollowing detailed description, with reference where appropriate to theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a screen shot of a GUI showing an example user registrationscreen according to some embodiments.

FIG. 2 is a screen shot of a GUI showing an example login screenaccording to some embodiments.

FIG. 3 is a screen shot of a GUI showing an example input screen forcapturing body characteristics and sizes according to some embodiments.

FIG. 4 is a screen shot of a GUI showing an example screen for a user toupload a photo of him or herself according to some embodiments.

FIG. 5 is a screen shot of a GUI showing an example shopping pageaccording to some embodiments.

FIG. 6 is a screen shot of a GUI showing an example shopping page with adrop-down menu listing choices for shopping by style according to someembodiments.

FIG. 7 is a screen shot of a GUI showing an example shopping page with adrop-down menu listing choices for shopping by brand according to someembodiments.

FIG. 8 is a screen shot of a GUI showing an example user profile screenthat has specific measurements of the user according to someembodiments.

FIG. 9 is a diagram showing fit points in a garment image for use withsome aspects of the disclosed embodiments.

FIG. 10 is a diagram showing fit points in a user image for use withsome aspects of the disclosed embodiments.

FIG. 11 shows an image of a user wearing a garment according to someembodiments.

FIG. 12 is graphical representation of a virtual garment carouselaccording to some embodiments.

FIG. 13 is a diagram showing a carousel sourcing engine that selectsgarments for the virtual garment carousel, according to someembodiments.

FIG. 14 is a flow chart of a method according to some embodiments.

DETAILED DESCRIPTION

The embodiments shown, disclosed, and described in the figures andspecification are set forth only as examples. As such, those skilled inthe art will appreciate that other arrangements and elements (e.g.,machines, interfaces, functions, orders, and groupings of functions) canbe used instead, and that some elements may be omitted altogether.Further, many of the elements shown and described herein are functionalentities that may be implemented as discrete or distributed componentsor in conjunction with other components, and in any suitable combinationand location. Various functions described herein as being performed byone or more entities may be carried out by hardware, firmware, and/orsoftware (and any combination thereof). For example, one or moreprocessors executing instructions stored in one or more tangiblecomputer-readable memory components may implement one or more of thefeatures and functions described herein.

Some embodiments comprise tangible, non-transitory computer readablemedia comprising instructions encoded thereon, where the instructions,when executed by one or more processors, cause one or more computingdevices (for example, a user's computing device individually or incombination with a server system, or perhaps a server systemindividually or in combination with a user's computing device) toexecute one or more methods comprising a series of one or more processesand/or sub-processes to generate a virtual fit for a garment for a userand display one or more images of the user wearing the garment via agraphical user interface. In some embodiments, the sub-processes (orperhaps functions thereof) may be performed successively,simultaneously, or intermittently with other sub-processes (or perhapsfunctions thereof). Further, it is envisioned that some of the stepsand/or functions of the sub-processes may be changed, may be substitutedfor, may be combined with other steps and/or functions of othersub-processors, or may be eliminated. Further, it is envisioned thatsome sub-processes and other disclosed methods may include additionalsteps not explicitly shown or described herein. The methods, processes,and sub-processes described herein are merely exemplary and thoseskilled in the art will recognize modifications that fall within thescope and spirit of the inventions and embodiments thereof disclosed anddescribed herein.

Some embodiments include a process comprising one or more of thefollowing: (i) a Photo Grading Sub-Process adapted to create an array ofgarment images; (ii) a User Mapped Sub-Process adapted to capture auser's body measurements; (iii) a Fit Point Alignment Sub-Processadapted to align one of the garment images (and/or models) with a 2-Dimage (and/or 3-D model) of a user's body; (iv) a Style PatternedSub-Process adapted to compare a virtual fit of a garment on a user'sbody with a manufacturer's standard fit for the garment; (v) aPreference Driven Sub-Process to account for user garment fitpreferences; and (vi) a Raster Mapped 3-D Apparel Sub-Process adapted tovisually illustrate a virtual fit of the garment on the user's body. Anoverview of each of these sub-processes is described herein followed bya detailed description of the drawings, which show various aspects ofexample embodiments of systems and methods implementing various virtualapparel fitting functions, including but not limited to (i) thesub-processes and/or portions and/or variations of aspects of thesub-processes and/or (ii) other functions performed by embodiments ofthe virtual apparel fitting systems disclosed and described herein.

Some embodiments additionally include a virtual carousel featurecomprising one or more of (i) generating a first virtual garmentcarousel for a user, wherein the first virtual garment carouselcomprises a plurality of garment images of a first type of garment; (ii)generating a first composite image of the user wearing a first outfitcomprising a first garment and a second garment, wherein the firstcomposite image comprises a user image, a first garment image, and asecond garment image, wherein the first garment image is a garment imagein the first virtual garment carousel, wherein the second garment imageis an image of a second type of garment, and wherein garment fit pointsin the first and second garment images align with corresponding fitpoints in the user image; (iii) displaying the first composite image ina graphical user interface; (iv) receiving a garment change command viathe graphical user interface to change from the first garment image to anext garment image in the first virtual garment carousel; (v) inresponse to receiving the garment change command, generating a secondcomposite image of the user wearing a second outfit comprising thesecond garment and a third garment, wherein the second composite imagecomprises the user image, the second garment image, and a third garmentimage, wherein the third garment image is the next garment image in thefirst virtual garment carousel, and wherein garment fit points of thesecond and third garment images align with corresponding fit points inthe user image; and (vi) displaying the second composite image in thegraphical user interface.

Overview of Example Embodiments

Photo Grading Sub-Process

Some embodiments may comprise a Photo Grading Sub-Process that includesgenerating a set of 2-D garment images and/or 3-D garment modelscorresponding to various sizes of the garment from a single 2-Dreference image and/or 3-D model of the garment. In some embodiments,the Photo-Grading Sub-Process includes one or more of: (i) capturing orotherwise obtaining at least one digital image of a garment on amannequin; (ii) establishing a number of set points (e.g., fit points)in the digital image of the garment that are used for re-sizing theimage of the garment in a virtual manner; and/or (iii) manipulating theimage of the garment at one or more of the set points (or fit points) tore-size the image of the garment, where the image manipulation is basedon size rules for the garment (sometimes referred to herein as garment“grade rules”) as established by the manufacturer of the garment. Insome embodiments, the at least one digital image of the garment on themannequin may include multiple images of the garment on the mannequin,such as a front view image, a side view image, a rear-view image, and soon.

Some embodiments of the Photo Grading Sub-Process may additionally oralternatively include one or more of: (i) providing a mannequin having aselected clothing size; (ii) providing a garment with the same selectedclothing size as the mannequin; (iii) obtaining one or more digitalimages of the garment on the mannequin; (iv) scaling the image such thata desired number of pixels of the image corresponds with a 1-inchmeasurement (or perhaps another scale) of the garment (i.e., determininghow many pixels in the image correspond to an inch of fabric in thegarment on the mannequin); (v) establishing a number of set points (orfit points) for re-sizing the image of the garment; and (vi) choosingone or more of the set points and re-sizing the image of the garment bymoving the chosen set points some number of pixels based on (a) thenumber of pixels in the image corresponding to an inch of fabric of thegarment on the mannequin and (b) the size rules (or “grade rules”) forthe garment as established by the manufacturer of the garment.

The output of one or more functions of the Photo Grading Sub-Process isa set of garment images, where each garment image in the set correspondsto a particular size of the garment. For example, if a garment isavailable in sizes 0, 2, 4, 6, and 8, then the set of garment imagesincludes a garment image for size 0 of the garment, a garment image forsize 2 of the garment, a garment image for size 4 of the garment, agarment image for size 6 of the garment, and a garment image for size 8of the garment. In operation, from a single “reference” image of thegarment on a mannequin of the same garment size, a virtual apparelfitting system configured to execute one or more functions of theabove-described Photo Grading Sub-Process generates a set of garmentimages for the garment based on one or more fit points in the referenceimage and the manufacturer's grade rules for the garment, where eachgarment image looks as though it was photographed on anappropriately-sized mannequin. For example, the garment image for size 2of the garment looks as though it was photographed on a size 2 mannequinwhile the garment image for size 10 of the garment looks as though itwas photographed on a size 10 mannequin, but both the size 2 garmentimage and the size 10 garment image were instead generated by digitallymanipulating a single photo of one size of the garment (e.g., a size 6)on an appropriately-sized mannequin (e.g., a size 6 mannequin).

In operation, one photo (the reference photo) of one size of the garment(the reference size) is taken on a mannequin. Once the reference photois uploaded to the virtual apparel fitting system, the system creates aset of garment images, where each garment image corresponds to aparticular size of the garment. In operation, creating the set ofgarment images may include numerical micro adjustments (e.g., adding,removing, expanding, shrinking, or other adjustments) of pixels in thereference photo. In some embodiments, adjustment increments may berelated to the reference photo and the manufacturer's grade rules.Further, the same or similar process could be following for a frontview, side view, and rear view of the garment. For example, (i) a singlefront view reference photo of the garment could be used to create aplurality of front view garment images, where each front view garmentimage corresponds to a particular size of the garment, (ii) a singleside view reference photo of the garment could be used to create aplurality of side view garment images, where each side view garmentimage corresponds to a particular size of the garment, and (iii) asingle rear view reference photo of the garment could be used to createa plurality of rear view garment images, where each rear view garmentimage corresponds to a particular size of the garment. More, fewer,and/or different views could be used as well.

Some embodiments of the Photo Grading Sub-Process may include one ormore of the following steps, not necessarily in the order shown below.

Step 1. Setting technical photo parameters, which may include settingphotography parameters of camera height, depth of field and imageresolution for the mannequin that is used for the creating the referenceimage.

Step 2. A mannequin calibration step, which may include taking a seriesof calibration two dimensional and/or three-dimensional photos and/orthree-dimensional scans to capture mannequin dimensions and to set imagescale. The calibration photos and/or scans can be taken with a clothtape measuring wrapped around each of the head, neck, chest, waist, hip,thigh, knee, calf, ankle, triceps, bicep and wrist of the mannequin. Themannequin can be measured laterally for shoulder width, torso lengths,arm length and inseam. A contractor's tape measure or yardstick can beused to set the inch scale without rotation. Additional or alternativemeasurements of the mannequin's size and dimensions could be captured aswell.

Step 3. Setting Fit Points, which may include setting one or more fitpoints (or coordinate points) on the mannequin image to establish pointsof adjustment on the reference image that can be manipulated to createthe sized range of garment images. Some embodiments include up to 48 ormore unique fit points on the mannequin image. But some embodiments mayinclude fewer than 48 points of adjustment. In some embodiments, anycombination of fit points can be used to change one size and/or shape ofa garment in the reference garment image to generate another garmentimage for another size of the garment. For example, less than all of thefit points of a reference garment image of a size 2 of the garment maybe manipulated to create a garment image for a size 2 petite, e.g., onlya select few fit points relating to length, including a shorter bodice,shorter skirt length, higher arm holes for a dress, and/or other fitpoints based on the manufacturer's grade rules.

Step 4. A setting photo grade parameter step, which may includeconfiguring one or more manipulation formulas that are used for changingthe clothing image from one size to another (i.e., generating one ormore garment images from the reference garment image). To make larger orsmaller sizes, each point is manipulated to stretch or shrink the imagein specific increments at one or more of the set points (or fit points).The incremental adjustments are unique to the garment and garment sizeand are based on the grade/size rules used by the manufacturer. In oneexample, if a manufacturer's size 4 pant is 2 inches larger in the waistand 2.5 inches larger in the hip than that manufacturer's size 2 pant,then the front view of the reference garment image (the garment imagefor the size 2 pant) can be manipulated such that one or more of thewaist fit points LW1 (Left Waist-1), LW2 (Left Waist-2), RW1 (RightWaist-1), and RW2 (Right Waist-2) are stretched some number of pixelscorresponding to half of the size increase (or 1 additional inch offabric), and that the hip fit points LH1 (Left Hip-1), LH2 (Left Hip-2),RH1 (Right Hip-1), RH2 (Right Hip-2) are each stretched some number ofpixels corresponding to half of the size increase (or 1.25 additionalinches of fabric). The reference garment image is stretched by half ofthe size increase in this example because the increase in size from thesize 2 to the size 4 of the pants is an increase in the totalcircumference of the pants at the waist and hip, respectively; however,the reference garment image only shows the front of the pants, and it isassumed that half of the increase is in the front of the pants shown inthe reference garment image and half of the increase is in the back ofthe pants that is not shown in the reference garment image. In this way,the garment image for the size 4 pant (the garment) has more pixels thanthe reference garment image for the size 2 pant in a way that isproportional to how the actual size 4 pant has more fabric than theactual size 2 pant.

Step 5: Obtaining a technical photo of the mannequin wearing thereference size of the garment, which includes (i) placing the garment(the reference size of the garment in particular) on the mannequin and(ii) taking a photo (two-dimensional and/or three-dimensional) usingestablished technical photo parameters. In operation, the size of thereference garment preferably matches the size of the mannequin. Forexample, a size 2 reference garment is photographed on a size 2mannequin. Similarly, a size 6 reference garment is photographed on asize 6 mannequin.

Step 6: Photo grading, which may include clipping the technical photo ofthe mannequin wearing the garment (the reference size of the garment inparticular). In operation, the technical photo of the mannequin wearingthe reference size of the garment is edited to remove any background toobtain the reference garment image. In some embodiments, the referencegarment image is rescaled so that 60 pixels in the reference garmentimage are equal to 1 inch of fabric in the reference size of thegarment. However, the 60 pixels to 1-inch scale is arbitrary and couldbe set higher to achieve more detail or lower for less detail. In otherembodiments, the image is rescaled so that 1 inch of fabric in thereference size of the garment is the equivalent to anywhere from 1 to100 (or perhaps even more) pixels, such as for example 2, 3, 4, 5, 10,12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68,or 72 pixels, where a higher pixel-per-inch ratio provides higherresolution garment image and a lower pixel-per-inch ratio provides alower resolution garment image. In some embodiments, the reference imagemay be manipulated manually with image processing software to adjust thegarment image fit points based on one or more photograde parameters tocreate each garment image for each size of the garment. In otherembodiments, one or more server components of the virtual apparelfitting system may perform the scaling/re-sizing of the referencegarment image by applying one or more image processing algorithms togenerate each garment image based at least in part on fit points in thereference garment image and the manufacturer's grade rules for thegarment, as described in more detail herein.

Step 7: An application scale adjustment step, which may includerescaling each garment image in the set of garment images for differentscreen resolutions, thereby enabling the generated garment images to beviewed on screens having different screen resolutions. For example,smartphone screens typically display images having smaller resolutions(fewer number of pixels) whereas tablet, desktop, or laptop computerstypically display images having higher resolutions (greater number ofpixels).

Although some aspects of the description of the Photo-GradingSub-Process are described with reference to single 2-D images, thePhoto-Grading Sub-Process could also be performed with 3-D modelsinstead of or in addition to 2-D images. For example, in furtherembodiments, the Photo-Grading Sub-Process includes one or more of: (i)capturing or otherwise obtaining a 3-D model of a garment on amannequin; (ii) establishing a number of set points (e.g., fit points)in the 3-D model of the garment that are used for re-sizing the 3-Dmodel of the garment in a virtual manner; and/or (iii) manipulating the3-D model of the garment at one or more of the set points (or fitpoints) to re-size the 3-D model of the garment, where the 3-D modelmanipulation is based on size rules for the garment (sometimes referredto herein as garment “grade rules”) as established by the manufacturerof the garment.

In embodiments configured for use with 3-D models, the output of one ormore functions of the Photo-Grading Sub-Process is a set of 3-D garmentmodels, where each 3-D garment model in the set corresponds to aparticular size of the garment. For example, if a garment is availablein sizes 0, 2, 4, 6, and 8, then the set of 3-D garment models includesa 3-D garment model for size 0 of the garment, a 3-D garment model forsize 2 of the garment, a 3-D garment model for size 4 of the garment, a3-D garment model for size 6 of the garment, and a 3-D garment model forsize 8 of the garment. In operation, from a single “reference” 3-Dgarment model of the garment, a virtual apparel fitting systemconfigured to execute one or more functions of the above-described PhotoGrading Sub-Process generates a set of 3-D garment models for thegarment based on one or more fit points in the reference 3-D garmentmodel and the manufacturer's grade rules for the garment, where imagesof each 3-D garment model look as though they were photographed on anappropriately-sized mannequin. For example, images of the 3-D garmentmodel for size 2 of the garment look as though they were photographed ona size 2 mannequin while images of the 3-D garment model for size 10 ofthe garment look as though they were photographed on a size 10mannequin, but both the size 2 3-D garment model and the size 10 3-Dgarment model were instead generated by digitally manipulating a single3-D garment model of one size of the garment (e.g., a size 6) based onan appropriately-sized mannequin (e.g., a size 6 mannequin).

In operation, one 3-D garment model (the reference 3-D garment model) ofone size of the garment (the reference size) may be based on amannequin. Once the reference 3-D garment model is uploaded to thevirtual apparel fitting system, the system creates a set of garment 3-Dgarment models, where each 3-D garment model corresponds to a particularsize of the garment. In operation, creating the set of 3-D garmentmodels may include numerical micro adjustments (e.g., adding, removing,expanding, shrinking, or other adjustments) of voxels in the reference3-D garment model. In some embodiments, adjustment increments may berelated to the reference 3-D garment model and the manufacturer's graderules.

User Mapped Sub-Process

Some embodiments may comprise one or more aspects of a User MappedSub-Process for capturing and coding a user's measurements. Typically, auser takes and uploads a full body technical photograph to the virtualapparel fitting system. For embodiments that include a smartphoneapplication configured to take and upload the full body technical phototo a server of the virtual apparel fitting system, the smartphoneapplication configures the smartphone camera with parameters forcapturing a photograph of sufficient quality for use by the virtualapparel fitting system. Some embodiments may also include applying amask marker to the full body photo of the user to distinguish the user'sbody in the photo from the background in the photo. The virtual apparelfitting system may also use the mask marker to identify at least some ofthe user's body dimensions from the photo.

Some embodiments where the virtual apparel fitting system uses the UserMapped Sub-Process (or variations thereon) to capture the user's bodymeasurements may comprise one or more of: (i) obtaining a 2-D imageand/or 3-D model of the user's body; (ii) applying a mask marker overlayto the 2-D image (or 3-D model) of the user's body; (iii) adjustingpoints on the mask marker overlay to define where edges of the user'sbody are located in the 2-D image (or 3-D model); (iv) extractingcoordinates from the mask marker overlay to determine fit point data forthe user by determining pixel length values (or voxel dimensions) forone or more various fit points (e.g., the user's head, neck, chest,shoulder width, torso length, arm lengths, waist, hip, thighs, ankles,biceps, triceps, wrists, and/or perhaps other fit points); (v) assigningthe user fit point data to a profile for the user; and/or (vi) creatinga 2-D image and/or 3-D model from the image (and/or model) of the user'sbody and user fit point data.

Some embodiments of the User Mapped Sub-Process may include one or morethe following steps, not necessarily in the order shown below.

Step 1. A registration step where the user answers questions in aregistration process to identify his or her body characteristics, suchas height, weight, body type, shoe size, bra size, and/or perhaps othermeasurements, for example.

Step 2. Using a smartphone application, a user takes a full body pictureof him or herself for uploading to a server of the virtual apparelfitting system. In some embodiments, the smartphone application mayprovide directions for taking a good quality full body photo for use bythe virtual apparel fitting system. In such embodiments, the directionscan include one or more of the following:

-   -   for most accurate results, please be barefoot & wearing tight        fitting clothes or bathing suit;    -   the smartphone should be placed on a table 30″ tall;    -   we recommend balancing the smartphone against the back of a        laptop or other device to achieve the level position indicated        with the green checkmark;    -   once the smartphone is set up for taking the photo, press the        timer & stand facing the camera of the smartphone;    -   stand straight with arms relaxed at your sides;    -   center your body with the red center line;    -   tips of your toes should align with the red line at bottom of        the screen;    -   smile!

Although the example instructions listed above instruct the user toplace the smartphone on a table about 30″ tall, in some embodiments, theinstructions for one type of smartphone may be different than theinstructions for other types of smartphones to account for differencesin smartphone configurations. Preferably, the instructions for how highand how to orient the smartphone are based on the position of thesmartphone camera lens so that photos taken by different smartphones aretaken from similar camera perspectives.

Step 3. Once the image is taken, the photo that the user just tookappears with a mask marker overlay within the graphical user interface(GUI) of the smartphone application. The smartphone application directsthe user to adjust the body silhouette vector mask points in the maskmarker overlay to define where the edges of the body are located withinthe image. In some embodiments, a server component of the virtualapparel fitting system may instead perform the mask marker applicationto identify edges of the user's body in the photo and to distinguish theuser's body in the photo from the background in the photo.

Step 4. A mask marker analysis step includes extracting coordinates fromthe mask marker overlay to determine pixel length values for fit pointsin the photo of the user, including for example, fit points for theuser's head, neck, chest, shoulder width, torso lengths, arm length,waist, hip, thigh, ankle, bicep, triceps, wrist, and/or perhaps otherfit points. In operation, the fit point values are stored in the user'sprofile, which is stored in memory of the virtual apparel fittingsystem, e.g., in a database associated with and/or accessible by aserver component of the virtual apparel fitting system. In someembodiments, the virtual apparel fitting system (e.g., a server of thesystem) may additionally analyze the fit point data in the user image togenerate user-specific datasets for use in other aspects of someembodiments disclosed and described herein.

Some embodiments may alternatively include the user providing both (i) acalibration photo comprising a background, and (ii) a photo comprisingthe user standing in front of the background in the calibration photo.The server system can then extract an image of user from the photo ofthe user standing in front of the background by comparing thecalibration photo with the photo of the user standing in front of thebackground.

Step 5: Generating one or both of a 2-D user image and/or 3-D user modelcomprising the user fit points. One example of a 2-D user imagecomprising user fit points is shown in FIG. 10, which shows a diagramwith fit points 1002-1024 in a user image 1000 of a user 1001 for usewith some aspects of the disclosed embodiments, as described in furtherdetail herein.

Fit Point Alignment Sub-Process

Some embodiments may also include a Fit Point Alignment Sub-Processwhich includes aligning user fit points in a user image (e.g., a userimage created via the above-described User-Mapped Sub Process) tomannequin fit points in a mannequin image so that one or more garmentfit points in a garment image (e.g., a garment image created via theabove-described Photo Grading Process) can be aligned with one or morecorresponding user fit points in the user image for generating an imageof the user wearing the garment (or a particular size of the garment).

In some embodiments, the Fit Point Alignment Sub-Process includesaligning body landmarks of an image of the user's body (user fit pointsin the user image) with body landmarks of an image of a mannequin(mannequin fit points in a mannequin image) via one or more of thefollowing steps: (i) setting coordinate points on a mannequin image toestablish the location of the mannequin fit points; (ii) receiving a 2-Dimage of a user's body; (iii) applying a mask marker overlay to theimage of the user's body; (iv) adjusting points on the mask markeroverlay to define where edges of the user's body are located in theimage of the user's body; (v) determining the user's fit points based onvector points of the mask marker overlay; and (vi) shifting the user'sfit points to align with the mannequin's fit points.

In some embodiments, the Fit Point Alignment Sub-Process additionally oralternatively aligns the user's fit points in the user image with themannequin's posture alignment and the mannequin's fit points in themannequin image. The Fit Point Alignment Sub-Process enables garmentimages to be placed on the user image so that both are aligned, or atleast improves the virtual apparel fitting system's ability to align oneor more garment fit points in a garment image with one or morecorresponding user fit points in a user image.

Some embodiments of the Fit Point Alignment Sub-Process may include oneor more the following steps, not necessarily in the order shown below.

Step 1. A Technical Mannequin Posture Position step includes settingcoordinate points on a mannequin image to establish the location of bodylandmarks (i.e., mannequin fit points) on the mannequin image, includingfor example, top of head, center of neck, edges of shoulders, elbow,wrist, chest, waist, hips, center of crotch, knee, ankle, toes, and/orperhaps other mannequin fit points.

Step 2. A User Posture Mask Marker step includes using a mask marker todefine the edges of the user's body in a photograph of the user's bodyand to identify the edges of the user's body and to distinguish betweenthe user's body in the photo and the background in the photo. Someembodiments may additionally or alternatively include comparing a firstphoto including a background image (a calibration photo) with a secondphoto of the user standing in front of the background image in the firstphoto to extract an image of the user from the second photo.

Step 3. A User Posture Position step includes determining one or moreuser fit points in the user image based on one or more mask markervector points.

Step 4. A Fit Point Alignment Image Adjustment step includes adjustingthe user image within a set tolerance to shift the user fit points inthe user image to align with the mannequin fit points in the mannequinimage. In some embodiments, the Fit Point Alignment Image Adjustmentincludes manually aligning the user fit points in the user image withcorresponding mannequin fit points in the mannequin image via imageprocessing software. In other embodiments, the virtual apparel fittingsystem (or perhaps a server component of the virtual apparel fittingsystem) may be configured to automatically align user fit points in theuser image with mannequin fit points in the mannequin image.

Although the Fit Point Alignment Sub Process is described with referenceto 2-D images of the user and a mannequin, the Fit Point Alignment SubProcess could additionally or alternatively be implemented with 3-Dmodels of the user and the mannequin. For example, in such embodiments,the Fit Point Alignment Sub-Process includes aligning body landmarks ofa 3-D body model of the user's body (user fit points in the 3-D bodymodel) with body landmarks of a 3-D body model of a mannequin (mannequinfit points in a 3-D mannequin model) via one or more of the followingsteps: (i) setting coordinate points on a 3-D mannequin body model toestablish the location of the mannequin fit points; (ii) receiving a 3-Duser body model of a user's body; (iii) applying a mask marker overlayto the 3-D body model of the user's body; (iv) adjusting points on themask marker overlay to define where edges of the user's body are locatedin the 3-D body model of the user's body; (v) determining the user's fitpoints based on vector points of the mask marker overlay; and (vi)shifting the user's fit points to align with the mannequin's fit points.

Style Patterned Sub-Process

Some embodiments may also include a Style Patterned Sub-Process thatincludes determining an individual garment's key measurement points. The“key measurement points” are the measurement points of the garment thatare most important for determining whether and/or the extent to whichthe garment (or at least a particular size of the garment) will fit aparticular user.

In some embodiments, the Style Patterned Sub-Process includes: (i)storing data corresponding to garment measurement points from thegarment manufacturer's specifications and perhaps other garment datasuch as fabric type and/or drape characteristics; (ii) storing aweighting factor for one or more garment key measurement points, whereinindividual weighting factors are expressed as a percentage and togethertotal 100%; and (iii) comparing how a user's measurements predicted froman analysis of a user image (and/or perhaps from the user's actual bodymeasurements from information from the user's profile) compares to thegarment manufacturer's fit model for the garment in a selected size, andexpressing the comparison as a fit index of a value from 0 to 10 (orperhaps some other range, e.g., 1 to 5, 1 to 100, or some other range ofvalues). In operation, garment data from the garment manufacturer'sgarment specifications, user measurement points (and perhaps other userinformation) are compared with garment key measurement points andqualitative and quantitative data about the garment fabric and othercharacteristics that affect fit and wear ability.

Some embodiments of the Style Patterned Sub-Process may include one ormore the following steps, not necessarily in the order shown below.

Step 1. A garment dimensions collection step includes receiving andstoring data corresponding to key measurement points for a particulargarment (and perhaps size of garment) from the garment manufacturer'sgarment specification for that particular garment. The key measurementpoints may include one or more measurement points selected from theshoulder width, top torso length, bottom torso length, rise, inseam, armlength, neck, chest, waist, hip, thigh, triceps, bicep, wrist, highpoint shoulder to hem, waist to hem, and/or other fit points. Inoperation, different garments may have different key measurement points.

Step 2. A Garment/Fabric Dynamic Characteristics collection stepincludes receiving and storing characteristics about the garment,including but not limited to the garment's fabric structure(knit/woven/felt), the fabric stretch type and percentage, adjustablegarment features like draw string closures, fabric weight, fabricstiffness, fabric grain (as it relates to drape and stretch), and/orwhether the garment is intended for layered wearing (for example, a teeshirt might be worn close to the skin whereas a coat is worn overlayers). Other garment/fabric characteristics about a particular garmentcould be stored as well.

Step 4. A Fit Model Relational Size step includes identifying thegarment manufacturer's “ideal fit” for the garment manufacturer's fitmodel. The manufacturer's fit model corresponds to the body measurementsfor which the manufacturer designed the garment. In operation, differentmanufacturers have different fit models; some manufacturers may havedifferent fit models for different garments. For example, amanufacturer's fit model for a “slim fit” garment might be differentthan the manufacturer's model for a “big and tall” garment. Someembodiments may also include determining a percentage or other measureof fabric ease at key measurement points of the garment in relation tothe manufacturer's fit model. If a fit model for a particularmanufacturer or particular garment is not available, the fit model canbe estimated based on the median values of the manufacturer's size chartfor the garment.

Step 3. A Weighting Factor setting step includes storing a weightingfactor for one or more key measurement points for the garment. Theweighting factor for a particular key measurement point for a garmentmay be based on one or more of the garment drape, fabric type, stretchparameters, etc. and the dimensions of the manufacturer's fit model forthat garment. The weighting factor for a key measurement point is set ata percentage value, where the higher the percentage value, the morecritical it is that the garment fit the user within the recommendedmeasurement range for that key measurement point. In some embodiments,the sum of the weighting factors for each of the key fit points of thegarment must add up to 100%.

Step 4. A Fit Index step includes calculating a fit index for aparticular size of a particular garment that quantifies at least in parthow well the user's measurements match the garment manufacturer's fitmodel for that particular size of that particular garment based at leastin part on how well the key measurement points for that particular sizeof that particular garment align with corresponding user measurementspoints on the user's body, and/or perhaps a difference between (i) avalue of a measurement point of the user and (ii) a value of acorresponding measurement point of a fit model for that size of thegarment. In operation, the more closely that the user's bodymeasurements match the garment manufacturer's fit model for thatgarment, the better the garment is likely to fit the user.

Step 5. A Style Pattern Fit Estimate step includes estimating how well aparticular manufacturer's garment and/or garment style would fit theuser based on one or more of (i) the user's Fit Index relative to themanufacturer's fit model, and/or (ii) how well key measurement points inthe garment align with corresponding user measurement points (and/orperhaps a difference between a value of a measurement point of the userand a value of a corresponding measurement point of a fit model for thatsize of the garment).

Preference Driven Sub-Process

Some embodiments may also include a Preference Driven Sub-Process toaccommodate user preferences for fit, e.g., if a particular user prefersa looser-than-standard fit, a tighter-than-standard fit, alonger-than-standard fit, a shorter-than-standard fit, and/or perhapsother user preferred deviations from a standard fit.

In some embodiments, the Preference Driven Sub-Process accounts for usergarment fit preferences and includes one or more of the following steps:(i) creating a user body model; (ii) creating a user's ideal fit modelbased on user preferences regarding how loose or tight the user prefersclothes to fit at one or more fit points; (iii) optionally refining theuser's ideal fit model based on user feedback from items purchased; (iv)for a particular garment, determining a weighting factor for one or morekey measurement points of the garment based on the user's fitpreferences, wherein each weighting factor is expressed as a percentageand where all of the weighting factors together total 100%; and (v)generating a fit index for a garment based on one or more of the user'sbody model, the user's ideal fit model, and the weighting factors forthe key measurement points of the garment.

In some embodiments, the Preference Driven Sub-Process includes (i)creating a custom fit profile for the user for a particular size of aparticular garment based at least in part on a combination of data fromthe User Mapped Sub-Process and the Style Pattern Sub-Process and (ii)optionally revising the user's custom fit profile based on learned orspecified user preferences.

Body Mirroring Avatars

Some embodiments include mapping one or more user images (e.g., one ormore of 2-D images or perhaps a 360° image) onto a body mirroring avatarthat mirrors the user's body shape and dimension, weight, and/or height.Some embodiments may alternatively use body mirroring avatars withoutmapping user images onto avatars.

Raster Mapped 3-D Apparel Sub-Process

Some embodiments may further include a Raster Mapped 3-D ApparelSub-Process that includes mapping 2-D garment images and/or 2-D userimages onto 3-D wire frames to create 3-D models of the user wearinggarments.

In some embodiments, the Raster Mapped 3-D Apparel Sub-Process includesone or more of: (i) receiving a 360° raster image of a reference garmentdisplayed on a mannequin; (ii) receiving a 3-D scan of the referencegarment on the mannequin and creating a 3-D model image of the exteriorof the garment displayed on the mannequin based on the 3-D scan; (iii)aligning the 3-D model image with the 360° raster image and draping theraster image over the 3-D model image to create a 3-D garment image;(iv) combining a 3-D user model with the 3-D garment model to generate a3-D model of the user wearing the garment; and/or (v) optionallymodifying the 3-D model of user wearing the garment based on user and/orgarment manufacturer preferences. In some embodiments, the Raster Mapped3-D Apparel Sub-Process could be used in combination with one or more ofthe other sub-processes and/or other features and functions disclosedand described herein.

DETAILED DESCRIPTION OF THE FIGURES

FIG. 1 is a screen shot of a Graphical User Interface (GUI) showing anexample user registration screen 100 according to some embodiments.

Registration screen 100 enables a new user to register with the virtualapparel fitting system. To register with the virtual apparel fittingsystem, a user enters an email address into field 102, enters a passwordinto password field 104, enters the password again into the confirmpassword field 106, enters a zipcode into zipcode field 108, indicates agender via gender selection field 110, and activates the register button112 within the registration screen 100. After registering with thevirtual apparel fitting system, the user may thereafter provideadditional information to the virtual apparel fitting system asdescribed herein. Some embodiments may include additional or fewerfields in a registration screen. For example, some embodiments may notinclude zipcode field 108. Similarly, some embodiments may includefields for the user's name and mailing address for example.

FIG. 2 is a screen shot of a GUI showing an example login screen 200according to some embodiments. Once a user has registered with thevirtual apparel fitting system, the user may login to the virtualapparel fitting system via login screen 200 by entering the user'sregistered email into email field 202, entering the user's password intothe password field 204, and activating the login button 206. Someembodiments may include additional or fewer fields in a login screen.

FIG. 3 is a screen shot of a GUI showing an example input screen 300 forcapturing body characteristics, measurements, and sizes from a useraccording to some embodiments. After registering with the virtualapparel fitting system (FIG. 1) and/or logging in to the virtual apparelfitting system (FIG. 2), the user provides his or her bodycharacteristics and/or measurements to the virtual apparel fittingsystem via input screen 300 by entering his or her height into heightfield 302, entering his or her weight into weight field 304, andentering other body characteristics, measurements, and/or sizeinformation into other body measurement fields 306. Some embodiments mayinclude additional or fewer fields for capturing body characteristics,measurements, and sizes. For example, in some embodiments, input screen300 may additionally or alternatively include information on the user'sdress size, coat size, shirt size, pant size, and/or other sizinginformation and/or body measurements.

FIG. 4 is a screen shot of a GUI showing an example screen 400 for auser to upload a photo of him or herself according some embodiments. Inoperation, the user activates button 402 to take a digital image (orperhaps to select a previously taken digital image) of the user foruploading to the virtual apparel fitting system. Some embodiments mayuse different mechanisms to launch a camera application to take a newdigital image or to enable the user to upload a digital image of theuser to the virtual apparel fitting system.

FIG. 5 is a screen shot of a GUI showing an example shopping page 500according some embodiments. Shopping page 500 includes a set 502 ofgarments that a user can select to try on via the virtual apparelfitting system. In some embodiments, the shopping page 500 may displaylarger or smaller sets of garments on a single page.

FIG. 6 is a screen shot of a GUI showing an example shopping page 600with a menu 602 listing choices for shopping by style according to someembodiments. Example shopping page 600 shows a menu 602 comprisingdifferent styles of clothes. Some embodiments may include menus thatcomprise more or fewer styles of clothes than the styles shown indrop-down menu 602.

FIG. 7 is a screen shot of a GUI showing an example shopping page 700with a menu 702 listing choices for shopping by brand according someembodiments. Example shopping page 700 shows a menu 702 comprisingdifferent brands. Some embodiments may include menus that comprise moreor fewer brands than the brands shown in menu 702.

FIG. 8 is a screen shot of a GUI showing an example user profile screen800 that shows specific measurements of the user according to someembodiments. Example user profile screen 800 includes body andmeasurement information for the user, including the user's height infield 802, the user's weight in field 804, the user's preferred clothingfit in field 806, and the user's body shape 808, along with othermeasurements in one or more additional fields 810. Some embodiments mayhave more or fewer body and measurement information than the body andmeasurement information shown in example user profile screen 800. Forexample, some embodiments may additionally or alternatively include theuser's dress size, the user's inseam, the user's bust size, and/orperhaps other body and/or measurement information.

FIG. 9 is a diagram showing fit points 902-918 in a garment image 900 ofone size of a garment 901 for use with some aspects of the disclosedembodiments.

In some embodiments, the virtual apparel fitting system uses theabove-described Photo-Grading Sub-Process (and/or variations thereof) togenerate a plurality of garment images for a garment based on a singledigital image of the garment, wherein each garment image corresponds toa different size of the garment. The plurality of garment images mayinclude two-dimensional garment images and/or images ofthree-dimensional garment models, as described previously. Additionally,while the garment image 900 shows only the front of dress 901,additional garment images may show the side(s) and/or back of dress 901.In some embodiments, a server component of the virtual apparel fittingsystem generates the plurality of garment images for a particulargarment.

For example, a typical garment such as dress 901 shown in FIG. 9 isavailable in a range of sizes, such as sizes 0, 2, 4, 6, 8, 10, 12, andperhaps other smaller or larger sizes. Some garments may also haveadditional designations, such as petite, tall, long, short, maternity orother additional designations. For example, in addition to sizes 0-12,the dress shown in FIG. 9 may also be available in 0-Petite, 2-Petite,and 4-Petite and perhaps other sizes with additional designations.

In some embodiments, the virtual apparel fitting system generates (orperhaps receives) a garment image of a “reference” (or standard) sizefor a garment. In some embodiments, the virtual apparel fitting systemuses the garment image for the reference size of the garment as a“reference garment image.” In practice, generating the reference garmentimage includes (i) receiving a digital image of a mannequin wearing the“reference” size of the garment and (ii) removing the mannequin from thedigital image, e.g., via a mask. The virtual apparel fitting system thenuses the reference garment image to generate a garment image for eachsize of the garment based on a set of “fit points” for the garment and aset of “grade rules” for the garment.

A garment's grade rules are typically available from the manufacturerbut could alternatively be obtained by physically measuring differentsizes of the garment or determined from reference pattern grading textbooks or perhaps other sources. The grade rules describe themeasurements of each size of the garment at a set of “fit points” forthe garment. The fit points for example dress 901 in FIG. 9 include setof five neck fit points 902, a set of seven shoulder fit points 904, aset of five upper chest fit points 906, a set of seven mid-chest fitpoints 908, a set of seven waist fit points 910, a set of eleven hip fitpoints 912, a set of eleven thigh fit points 914, a set of eleven kneefit points 916, and a set of eleven calf fit points 918. Other garmentsmay have more or fewer fit points arranged in the same or differentareas. For example, a garment with sleeves (e.g., a shirt or blouse) mayhave multiple fit points along the sleeve, e.g., bicep, elbow, forearm,and so on. Similarly, a shirt or blouse may not have fit points for thethigh, knee, or calf.

In operation, the virtual apparel fitting system preferably uses thegarment's “grade rules” obtained from the manufacturer to make smallerand/or larger garment images for smaller or larger sized versions of thegarment based on the garment fit points. Making smaller and/or largergarment images from the “reference” garment image is sometimes referredto herein as “scaling” the “reference” garment image to the larger orsmaller garment images. To use the example dress shown in FIG. 9, if the“reference garment image” is an image of a size 6 of dress 901, then thevirtual apparel fitting system can use the manufacturer's grade rulesand the fit points for dress 901 to convert the “reference garmentimage” of the size 6 of the dress 901 to a scaled image of any othersize of the dress 901.

Mid-chest fit points 908 ₆ and 908 ₇ and waist fit points 910 ₆ and 910₇ illustrate one way that the virtual apparel fitting system uses themanufacturer grade rules and the fit points for dress 901 to generatescaled garment images for larger or smaller sizes of the dress 901relative to the “reference garment image” of the size 6 of the dress901. The manufacturer's grade rules for the dress 901 define, for everyavailable size of the dress 901: (i) the distance between fit point 908₆ and fit point 908 ₇, (ii) the distance between fit point 908 ₇ and fitpoint 910 ₇, (iii) the distance between fit point 910 ₇ and fit point910 ₆, and (iv) the distance between fit point 910 ₆ and 908 ₆. Thesefour distance measurements define an area 920 bounded by fit points 908₆, 908 ₇, 910 ₇, and 908 ₆. The distances between fit points 908 ₆, 908₇, 910 ₇, and 908 ₆ are greater for larger sizes of the dress 901 andsmaller for smaller sizes of the dress 901. Similarly, the correspondingarea bounded by fit points 908 ₆, 908 ₇, 910 ₇, and 908 ₆ is greater forlarger sizes of the dress 901 and smaller for smaller sizes of the dress901.

Using the “reference garment image” 900 of the size 6 “reference size”of dress 901, the fit points of the dress 901, and the manufacturer'sgrade rules for the dress 901, the virtual apparel fitting systemdetermines a relationship between (i) a number of pixels between fitpoints 908 ₆, 908 ₇, 910 ₇, and 908 ₆ (and perhaps also a number ofpixels in area 920 bounded by fit points 908 ₆, 908 ₇, 910 ₇, and 908 ₆of dress 901) in the “reference garment image” 900 of the reference size6 of the dress 901 and (ii) an amount of actual fabric between fitpoints 908 ₆, 908 ₇, 910 ₇, and 908 ₆ for the reference size 6 of thedress 901 (and perhaps also within area 920 bounded by fit points 908 ₆,908 ₇, 910 ₇, and 908 ₆ of dress 901) according to the grade rules.After determining the relationship between the pixels in the referencegarment image of the size 6 dress and the amount of fabric in the actualsize 6 of the dress (based on the garment's grade rules), the virtualapparel fitting system can use that pixel-to-inch relationship to scalethe “reference garment image” 900 up in size for larger sizes of thedress 901 (e.g., sizes 8, 10, 12, and so on) and/or scale the “referencegarment image” 900 down in size for smaller sizes of the dress 901(e.g., sizes 4, 2, 0, and so on).

As a simplified illustrative example, assume that the grade rules forthe dress 901 state that, for a size 6 of the dress 901: (i) thedistance between fit point 908 ₆ and fit point 908 ₇ is one inch, (ii)the distance between fit point 908 ₇ and fit point 910 ₇ is threeinches, (iii) the distance between fit point 910 ₇ and fit point 910 ₆is one inch and (iv) the distance between fit point 910 ₆ and 908 ₆ isthree inches. In such an example, the area 920 bounded by fit points 908₆, 908 ₇, 910 ₇, and 908 ₆ in the size 6 of the dress 901 is threesquare inches.

Additionally, assume that an imaging analysis of the “reference garmentimage” 900 for the reference size 6 of the dress 901 shows (i) thedistance between fit point 908 ₆ and fit point 908 ₇ is 100 pixels, (ii)the distance between fit point 908 ₇ and fit point 910 ₇ is 300 pixels,(iii) the distance between fit point 910 ₇ and fit point 910 ₆ is 100pixels and (iv) the distance between fit point 910 ₆ and 908 ₆ is 300pixels. In such an example, the area 920 bounded by fit points 908 ₆,908 ₇, 910 ₇, and 908 ₆ in the reference garment image 900 of the dress901 includes 30,000 pixels.

In this simplified illustrative example, the relationship between theamount of fabric in the reference size 6 of the dress 901 and the numberof pixels in the reference garment image 900 of the size 6 of the dress901 is 100 pixels to 1 inch (and 10,000 pixels per square inch). Ofcourse in practice, an actual fabric-to-pixel ratio may be more or lessthan 100 pixels to 1 inch. Once the virtual apparel fitting system hasdetermined the relationship between fabric to pixels with respect to thereference garment image, the virtual apparel fitting system can use thisrelationship to generate a separate garment image for size of thegarment.

For example, further assume that the grade rules for the dress 901further state that, for a size 8 of the dress 901: (i) the distancebetween fit point 908 ₆ and fit point 908 ₇ is 1.5 inches, (ii) thedistance between fit point 908 ₇ and fit point 910 ₇ is 3.5 inches,(iii) the distance between fit point 910 ₇ and fit point 910 ₆ is 1.5inches and (iv) the distance between fit point 910 ₆ and 908 ₆ is 3.5inches. In such an example, the area 920 bounded by fit points 908 ₆,908 ₇, 910 ₇, and 908 ₆ in the size 8 of the dress 901 is 5.25 squareinches. Using the 100 pixels to 1 inch relationship determined above,the virtual apparel fitting system can generate a garment image for thesize 8 of the dress 901 where: (i) the distance between fit point 908 ₆and fit point 908 ₇ is 150 pixels, (ii) the distance between fit point908 ₇ and fit point 910 ₇ is 350 pixels, (iii) the distance between fitpoint 910 ₇ and fit point 910 ₆ is 150 pixels and (iv) the distancebetween fit point 910 ₆ and 908 ₆ is 350 pixels. In such an example, thearea 920 bounded by fit points 908 ₆, 908 ₇, 910 ₇, and 908 ₆ in thesize 8 of the dress 901 is 52,500 pixels. In this manner, the generatedgarment image for a size 8 of the dress 901 has more pixels than thereference garment image 900 (size 6) in a manner proportional to how anactual size 8 of the dress 901 has more fabric than an actual size 6 ofthe dress 901.

In some embodiments, the virtual apparel fitting system may determinethe fabric to pixel ratio/relationship in one area and then apply thatratio to the entire image in a manner similar to that described above inthe simplified illustrative example. In other embodiments, the virtualapparel fitting system may determine a fabric to pixel ratio betweeneach adjacent fit point pair (e.g., 908 ₆ to 908 ₇ is one adjacent fitpoint pair, 908 ₇ to 910 ₇ is another adjacent fit point pair, and soon) and apply the determined fabric to pixel ratio between adjacent fitpoint pairs on a fit point pair by fit point pair basis when generatingthe garment image for a particular size of the garment.

In still further embodiments, the virtual apparel fitting system maydivide the reference garment image into a plurality of “tiles” where anindividual tile corresponds to an area bounded by a set of fit points.For example, area 920 bounded by fit points 908 ₆, 908 ₇, 910 ₇, and 908₆ may be considered one tile. The virtual apparel fitting system can usethe determined fabric to pixel ratio to scale the size of individualtiles in the reference garment image up or down according to adetermined ratio between fabric and pixels. In some embodiments, thevirtual apparel fitting system may determine a single fabric-to-pixelratio and apply that single fabric-to-pixel ratio to the entirereference garment image according to the garment's grade rules togenerate a garment image for each available size of the garment. Inother embodiments, the virtual apparel fitting system may determine afabric-to-pixel ratio for each tile on a tile-by-tile basis, and thenapply each tile's corresponding fabric-to-pixel ratio to that tileaccording to the grade rules to generate different garment images fordifferent sizes of the garment. Still further embodiments may includevarious combinations of the above-described methods (e.g., fit-pointpair by fit-point pair, tile-by-tile, etc.) to generate a plurality ofgarment images for a garment based on a single digital image of thegarment, wherein each garment image corresponds to a different size ofthe garment.

Those of skill art will understand that the fit points 902-918 are shownin FIG. 9 for illustration purposes only and need not be explicitlyshown (and preferably are not explicitly shown) in the reference garmentimage for a garment or in any of the generated garment images for thedifferent sizes of the garment.

As mentioned previously, in some embodiments, the virtual apparelfitting system additionally or alternatively generates a plurality ofthree-dimensional garment models, where each three-dimensional garmentmodel corresponds to a particular size of the garment. The procedure forgenerating three-dimensional garment models is similar to the procedurefor generating two-dimensional garment images described herein. Forexample, in some embodiments, the virtual apparel fitting system (i)receives a three-dimensional model of a mannequin wearing a referencesize of the garment and (ii) generates a three-dimensional garment modelfor the reference size of the garment by removing the mannequin from thethree-dimensional model of the mannequin wearing the reference size ofthe garment, wherein the three-dimensional reference model comprises aplurality of reference model regions. The virtual apparel fitting systemmay then use fit points in the three-dimensional reference model and themanufacturer's grade rules for the garment to determine one or morevoxel-to-fabric ratios that can be used to generate three-dimensionalgarment models for any size of the garment in a manner similar to thatdescribed herein with reference to creating two-dimensional garmentimages. The virtual apparel fitting system may be further configured togenerate images of the three-dimensional models for display to a uservia a GUI as described herein.

FIG. 10 is a diagram showing fit points 1002-1024 in a user image 1000of a user 1001 for use with some aspects of the disclosed embodiments.

In some embodiments, a user provides the virtual apparel fitting systemwith a digital photograph of him or herself, e.g., by taking a digitalphotograph and then uploading the photograph to the virtual apparelfitting system via screen 400 (FIG. 4). The virtual apparel fittingsystem may obtain a digital photograph of a user through alternativemethods as well.

Some embodiments may additionally include applying a mask marker to thedigital photograph of the user to determine the edges of the user's bodyin the digital photograph to obtain a user image. Alternatively, someembodiments may obtain a user image by (i) receiving (from the user) acalibration photo, where the calibration image includes a background,(ii) receiving (from the user) a photo of the user standing against thebackground, and (iii) extracting an image of the user from the photo ofthe user standing against the background by comparing the photo of theuser standing against the background with the calibration photo of thebackground. In some embodiments, the virtual apparel fitting system canuse the edges of the user's body in the user image to determine pixellength values between prospective user fit points in the user image inconnection with (i) generating the user image 1000 comprising user fitpoints 1002-1020 and/or (ii) analyzing the user image 1000 in connectionwith aligning fit points in a garment image (for a particular size ofthe garment) with user fit points 1002-1024 in the user image 1000.

After receiving the digital photograph of the user, the virtual apparelfitting system may use one or more aspects of the above-described UserMapped Sub-Process (and/or variations thereof) and/or theabove-described Preference Driven Sub-Process (and/or variationsthereof) to generate the user image 1000 of the user 1001.

The user image 1000 of the user 1001 includes a plurality of fit points1002-1024. The fit points for the example user image 1000 in FIG. 10include set of five neck fit points 1002, a set of nine shoulder fitpoints 1004, a set of nine upper chest fit points 1006, a set of sevenmid-chest fit points 1008, a set of seven waist fit points 1010, a setof seven hip fit points 1012, a set of six thigh fit points 1014, a setof six knee fit points 1016, a set of six calf fit points 1018, a set ofsix ankle fit points 1020, a set of two elbow fit points, and a set offour wrist fit points 1024. Other user images may have more or fewer fitpoints arranged in the same or different areas.

In some embodiments, after receiving the digital photograph of the user,the virtual apparel fitting system (i) determines prospective user fitpoints (not shown) for the user 1001 in the digital photograph; (ii)aligns the prospective user fit points (not shown) with technicalmannequin fit points (not shown) in an image of a technical mannequin(not shown); and (iii) shifts the prospective user fit points (notshown) in the digital photograph of the user 1001 to align theprospective user fit points with the technical mannequin fit points togenerate the user fit points 1002-1024 in user image 1000 of user 1001.In this manner, the digital photo of the user is mapped onto an image ofthe technical mannequin in part by shifting prospective user fit pointsin the digital photo to align with corresponding mannequin fit points.

Rather than using a photograph of the user, some embodiments mayalternatively use just a body mirroring avatar configured tosubstantially match the user's body shape, dimensions, weight, andheight, as defined in the user's user profile (see, e.g., user profilescreen 800 (FIG. 8)). In embodiments that use a body mirroring avatar, aphotograph of the user is not required. Such embodiments mayadditionally include: (i) determining prospective user fit points forthe user on the body mirroring avatar; (ii) aligning the prospectiveuser fit points with technical mannequin fit points in athree-dimensional image of a technical mannequin; and (iii) shifting theuser's prospective fit points to align with the technical mannequin fitpoints to generate a body mirroring avatar having user fit points thatare aligned with the mannequin fit points.

Some embodiments may additionally or alternatively include mapping thedigital photograph of the user onto a body mirroring avatar configuredto substantially match the user's body shape, dimensions, weight, andheight, as defined in the user's user profile (see, e.g., user profilescreen 800 (FIG. 8)). Such embodiments may additionally include: (i)determining prospective user fit points for the user on the bodymirroring avatar; (ii) aligning the prospective user fit points withtechnical mannequin fit points in a three-dimensional model of atechnical mannequin; and (iii) shifting the user's prospective fitpoints to align with the technical mannequin fit points to generate abody mirroring avatar having user fit points that are aligned with themannequin fit points.

FIG. 11 shows an example image 1100 of a user 1001 wearing a garmentaccording to some embodiments. FIG. 11 also shows a fit index 1102comprising a quantification of a degree to which the garment (dress 901)fits the user 1001.

In the example of FIG. 11, the image 1100 shows user 1001 wearing a size8 of the dress 901. To generate the image 1100 of user 1001 wearingdress 901, the virtual apparel fitting system aligns the garment fitpoints 902-918 (FIG. 9) in the size 8 of the dress 901 with at leastsome of the user fit points 1002-1024 (FIG. 10) of the user 1001.Although example image 1100 is shown as a two-dimensional image in FIG.11, other embodiment may include generating and displaying athree-dimensional image based at least in part on the methods forgenerating 3-D garment models and 3-D user models described herein.

FIG. 11 also shows a fit index 1102 for the garment (dress 901). In someembodiments, the fit index 1102 shows a quantitative value based atleast in part on how closely one or more of the user's 1001 bodymeasurement points match corresponding “key measurement points” in thegarment. In some embodiments, the server system generates the fit index1102 based at least in part on a difference between (i) a value of ameasurement point of the user's body (which may be based on one or bothof the user's actual measurements or an analysis of the user image 1000(FIG. 10)) and (ii) a value of a corresponding key measurement point ofa fit model for the garment.

For example, the “key measurement points” for dress 901 may include bustmeasurement point 1104, waist measurement point 1106, and hipmeasurement point 1108. In operation, the key measurement points mayvary from garment to garment depending on the garment. Preferably, thekey measurement points for a particular garment are the most importantmeasurement points that will have the greatest bearing on how well thegarment will fit (or perhaps not fit) a user. For example, those ofskill in the art would readily recognize that the chest, waist, and hipmeasurement points are more critical to the overall fit of dress 901than, for example, measurement points for the thigh, knee, or ankle.

In some embodiments, generating the fit index includes defining a set ofone or more weighting factors, wherein each weighting factor correspondsto a key measurement point for the garment. In some embodiments, foreach key measurement point of the fit model for the garment, the serversystem (i) determines a difference between the value of the keymeasurement point for the fit model of the garment and the correspondingmeasurement point of the user, (ii) generates a raw score by dividingthe determined difference by a wearable range for the measurement pointof the fit model of the garment, and (iii) multiplies the raw score bythe key measurement point's corresponding weighting factor to generate aweighted score for that key measurement point of the fit model for thegarment for that particular user. Then, the server system generates afit index for the garment for that user at least in part by summing theweighted scores for each measurement point of the fit model for thegarment for that user

Table 1110 in FIG. 11 shows one example of how the server system candetermine a fit index for a particular garment (in a particular size)for a particular user based on (i) differences between user measurementsand key measurement points for the garment manufacturer's fit model (ii)a wearable range for each key measurement point, and (iii) weightingfactors for each key measurement point.

Table 1110 shows the set of key measurement points 1112 for garment 901,which includes bust measurement point 1104, waist measurement point1106, and hip measurement point 1108.

Table 1110 also shows values for the user's 1001 body measurements 1114at the three key measurement points for the garment 901. The user's bodymeasurements 1114 may be stored in a profile for the user 1001. Inoperation, the user's 1001 body measurements in her profile may bedetermined from one or more of (i) actual body measurements input by theuser 1001 when registering with the system (e.g., FIGS. 3, 8), and/or(ii) an analysis of the user's 1001 body image 1000 (FIG. 10). In thisexample, the user's 1001 body measurements 1114 at the three keymeasurement points for garment 901 are (i) 35.5 inches in the bust, (ii)32 inches in the waist, and (iii) 36 inches in the hips.

Table 1110 also shows values for the key measurement points of the fitmodel for this particular size of the garment (i.e., dress 901). Asmentioned previously, the manufacturer's fit model reflects themanufacturer's “ideal” measurements for this particular size of thegarment. In this example, the values for the key measurement points forthe manufacturer's fit model of this particular size of the garment are(i) 36 inches in the bust, (ii) 32 inches in the waist, and (iii) 38inches in the hips.

Table 1110 also shows a wearable range 1118 for each key measurementpoint for this particular size of dress 901. In some embodiments, thewearable range for each key measurement point for the manufacturer's fitmodel may be based on one or more of (i) a wearable range defined by themanufacturer, (ii) a wearable range determined by the server system,e.g., based on the manufacturer's grade rules, textbooks, or otherguides, and/or (iii) a wearable range assigned by an operator of theserver system. In some embodiments, the wearable range may beadditionally or alternatively based at least in part on the type offabric (e.g., stretchiness or stiffness), whether the garment isintended to be worn with other garments as a base layer or an outerlayer, the drape or lie of the fabric, and/or perhaps other qualitativecharacteristics. In this example, the wearable range 1118 for each keymeasurement point is based on a 2 inch “grade rule” specified by thegarment manufacturer. As a result, for each key measurement point, thelow end of the wearable range is 1 inch less than the fit model's“ideal” and the high end of the wearable range is 1 inch greater thanthe fit model's “ideal” size. Here, the value of the wearable range is(i) from 35 inches to 37 inches in the bust, (ii) from 31 inches to 33inches in the waist, and (iii) from 37 inches to 39 inches in the hips.

In some embodiments, the server system may be configured to inform theuser that a particular size of a particular garment does not fit theuser if any one of the user's body measurements 1114 for the keymeasurement points for that size of the garment are outside of thewearable range 1118 for any one of the key measurement points for thatsize of the garment. For instance, if the example shown in FIG. 11corresponds to a size 6 dress, and if user's actual hip measurementexceeded 39 inches, then if the user tried to select a size 6 dress, thesystem may suggest that the user select a size 8 dress instead of thesize 6 because the user's body measurement for one of the keymeasurement points falls outside the wearable range. Similarly, if theuser's actual measurement was below the wearable range for a particularkey measurement point, then the system may suggest that the user selecta smaller size.

Table 1110 also shows a weighting factor 1120 for each key measurementpoint for this particular size of dress 901. In some embodiments, theweighting factor for each key measurement point for the manufacturer'sfit model may be based on one or more of (i) a weighting factor definedby the manufacturer, (ii) a weighting factor determined by the serversystem, e.g., based on the manufacturer's grade rules, textbooks, orother guides, and/or (iii) a weighting factor assigned by an operator ofthe server system. In some embodiments, weighting factor may be based ona qualitative assessment of the most important measurement points forthe garment, i.e., those measurement points that have the greatestimpact on how well (or not) a particular garment will fit a user. Inthis example, the weighting factor is (i) 45% for the bust, (ii) 45% forthe waist, and (iii) 10% for the hip because, based on the style ofdress 901, which is designed to be tighter through the bust and waistbut looser in the hips, the bust measurement point 1104 and waistmeasurement point 1106 are more important than the hip measurement point1108 when determining how well (or not well) dress 901 will fit aparticular user, such as user 1001.

In operation, for each measurement point, the system (i) determines adifference between the user's measurement and the fit model, (ii)generates a raw score by dividing the determined difference by thewearable range, and (iii) multiplies the raw score by a weighting factorto generate a weighted score for that measurement point. For example,for the bust measurement point 1104, the system (i) determines that thedifference between the user's bust measurement of 35.5 inches and thefit model's bust measurement of 36 inches is 0.5 inches, (ii) dividesthe 0.5 inch difference by the wearable range of 2 inches to generate araw score of 75% (e.g., 1−0.5/2), and (iii) multiplies the raw score of75% by the weighting factor of 45% to generate a weighted score of 34%.Similarly, for the waist measurement point 1106, the system (i)determines that the difference between the user's waist measurement of32 inches and the fit model's waist measurement of 32 inches is 0inches, (ii) divides the 0 inch difference by the wearable range of 2inches to generate a raw score of 100% (e.g., 1− 0/2), and (iii)multiplies the raw score of 100% by the weighting factor of 45% togenerate a weighted score of 45%. Finally, for the hip measurement point1108, the system (i) determines that the difference between the user'ship measurement of 37 inches and the fit model's hip measurement of 38inches is 1 inch, (ii) divides the 1 inch difference by the wearablerange of 2 inches to generate a raw score of 50% (e.g., 1−½), and (iii)multiplies the raw score of 50% by the weighting factor of 10% togenerate a weighted score of 5%.

Then, the system sums the weighted scores for each of the threemeasurement points to obtain the fit index, i.e., 34%+45%+5%=84%. Insome embodiments, the system may additionally divide the calculatedindex by 10 to generate a value for the fit index of 1 to 10. In theexample shown in FIG. 11, block 1102 shows a fit index of 8.4.

The above-described example is only one of many ways of calculating afit index based at least in part on a difference between at least onevalue of a measurement point of the user and a value of a correspondingmeasurement point of a fit model for the garment. For example, ratherthan calculating a raw score based on the actual wearable range as inthe above-described example, some embodiments may instead calculate theraw score based on a range that extends beyond the wearable range, e.g.,by a fixed amount or perhaps by a multiple of the manufacturer's graderule. For example, in some embodiments, the wearable range at eachmeasurement point is within a broader calculation range for themeasurement point, and such embodiments may use the calculation rangerather than the wearable range to generate raw scores at eachmeasurement point that are then used in calculating a fit index for aparticular size of a garment.

In another example, the system may use a 5 inch calculation rangecorresponding to 2.5 times the 2 inch grade rule. The calculation rangecould alternatively correspond to other multiples of the grade rule. Thecalculation range could also be some value independent of the graderule, such as some fixed range that is greater than the wearable range.In this example, for each measurement point, the system (i) determines adifference between the user's measurement and the fit model, (ii)generates a raw score by dividing the determined difference by the 5inch calculation range (which is broader than the wearable range), and(iii) multiplies the raw score by a weighting factor to generate aweighted score for that measurement point. For example, for the bustmeasurement point 1104, the system (i) determines that the differencebetween the user's bust measurement of 35.5 inches and the fit model'sbust measurement of 36 inches is 0.5 inches, (ii) divides the 0.5 inchdifference by the calculation range of 5 inches to generate a raw scoreof 90% (e.g., 1−0.5/5), and (iii) multiplies the raw score of 90% by theweighting factor of 45% to generate a weighted score of 40.5%.Similarly, for the waist measurement point 1106, the system (i)determines that the difference between the user's waist measurement of32 inches and the fit model's waist measurement of 32 inches is 0inches, (ii) divides the 0 inch difference by the calculation range of 5inches to generate a raw score of 100% (e.g., 1− 0/5), and (iii)multiplies the raw score of 100% by the weighting factor of 45% togenerate a weighted score of 45%. Finally, for the hip measurement point1108, the system (i) determines that the difference between the user'ship measurement of 37 inches and the fit model's hip measurement of 38inches is 1 inch, (ii) divides the 1 inch difference by the calculationrange of 5 inches to generate a raw score of 80% (e.g., 1−⅕), and (iii)multiplies the raw score of 90% by the weighting factor of 10% togenerate a weighted score of 8.0%.

Then, the system sums the weighted scores for each of the threemeasurement points to obtain the fit index, i.e., 40.5%+45%+8%=93.5%. Insome embodiments, the system may additionally divide the calculatedindex by 10 to generate a value for the fit index of 1 to 10, whichwould be 9.4 in this example.

In still further embodiments, rather than calculating a raw score, theserver system may instead lookup a raw score in a pre-configured tablefor the garment. In one such embodiment, for an individual measurementpoint, the server may (i) assign a raw score of 100% of the differencebetween the user measurement and the fit model measurement at the keymeasurement point is 0 (i.e., the user measurement=the fit modelmeasurement), (ii) assign a raw score of 95% if the difference is lessthan 0.25 inches, (iii) assign a raw score of 90% if the difference isbetween 0.25 inches and 0.5 inches, (iv) assign a raw score of 85% ifthe difference is between 0.5 inches and 0.75 inches, (v) assign a rawscore of 80% if the difference is between 0.75 inches and 1 inches, andso on. In operation, different garments may implement different lookuptables with different raw scores (e.g., 100%, 95%, 90%, etc.)corresponding to various difference values (0 inches, 0.25 inches, 0.25to 0.5 inches, etc.).

Some embodiments may additionally adjust certain values for the fitmodel of a particular garment (or garments, or type of garments, orstyle of garments, for example) based on user fit preferences. Inoperation the system may be configured to shift one or more values forone or more measurement points of the fit model up or down by 0.5 inchesor perhaps 1.0 inches or even 1.5 inches depending on how loose (ortight) the user prefers the fit as well as the measurement point (e.g.,the user may prefer a looser fit in the hips than in the arms). Ratherthan shifting one or more values for one or more measurements points ofthe fit model up or down by a specific amount, some embodiments mayinstead shift one or more values for one or more measurement points ofthe fit model up or down by some percentage (e.g., up or down by 5% or10% or some other value). For example, if user 1001 prefers alooser-than-standard fit through the bust in dresses, then the systemmay adjust the value of the bust measurement point 1104 for dress 901(and perhaps for all dresses, or perhaps at least for allsimilarly-styled dresses) by 0.5 inches to account for the user'sspecific fit preference. In this example, the system will decrease thebust measurement of the ideal model from 36 inches down to 35.5 inches(and also possibly shift the wearable range or perhaps the calculationrange, if applicable). By shifting the bust measurement of the idealmodel from 36 inches down to 35.5 inches, the system will calculate araw score of 100% for the bust measurement point 1104 rather than 75%,which will result in an overall higher fit index. Even though the user'sbody is actually 0.5 inches smaller than the manufacturer's fit model(the “ideal fit”), the system generates a higher fit index for thisparticular user by using this particular user's looser-than-standard fitpreference than the system would have otherwise calculated had thesystem not adjusted the fit model to account for the user's fitpreference. In this manner, the system can generate a fit for a userthat is based at least in part on the user's own personal fitpreference.

Regardless of the method used to determine the raw scores, the systemmay still determine the fit index in any of the ways described hereinand then provide the fit index to the user's computing device fordisplay to the user within a graphical user interface.

FIG. 12 is a graphical representation of a user interface showingvirtual garment carousel 1200, according to some embodiments. Virtualgarment carousel 1200 includes garment images 1206 a, 1206 b, and 1206c. In operation, the garment images 1206 a-c are fitted to a user image1204 displayed in a virtual fitting room 1202 when a user swipes left orright to navigate through the garments in the garment carousel 1200. Theuser interface also displays a garment type selector 1208, shopping bag1210, and menu buttons 1212, 1214, 1216, and 1218.

In operation, the combination of user image 1204 with one of garmentimages 1206 a, 1206 b, and 1206 c creates a composite image of the userwearing an outfit via the Fit Point Alignment Sub-Process describedherein.

Typically, user image 1204 is a digital image that has been provided bythe user via the GUI described in FIG. 4. In preferred embodiments, userimage 1204 includes a full-length image of the user including fit pointsto allow for garment images 1206 a, 1206 b, and 1206 c to be superposedupon user image 1204 via the Fit Point Alignment Sub-Process describedherein. However, some embodiments could make use of an image that isless than a full-length image of the user (e.g., just the user's torso,just the user's legs)

Garment images 1206 a, 1206 b, and 1206 c are images representinggarments included for display in virtual garment carousel 1200. In someembodiments, the garment images 1206 a, 1206 b, and 1206 c may have beenadded to the garment carousel 1200 based on one or more embodiments ofthe method shown and described with reference to FIG. 13. In someembodiments, garment images 1206 a, 1206 b, and 1206 c have a pluralityof pre-determined fit points that allow for superposing of garmentimages 1206 a, 1206 b, and 1206 c upon user image 1204 via the Fit PointAlignment Sub-Process described herein to create the composite images ofone or more garment images superposed over the user image 1204.

Garment type selection 1208 allows a user to select the type of garmentto be displayed in virtual garment carousel 1200. In FIG. 12, garmenttype selector 1208 is set to “Tops.” Other selections, which are notshown, may include pants, shorts, jackets, and sweaters. Other types ofgarments may exist, too.

Shopping bag 1210 includes garment selections the user has chosen topurchase or at least stored for later purchase. While not shown, in someembodiments, selecting shopping bag 1210 opens a checkout window whichallows the user to purchase any saved garments from virtual garmentcarousel 1200.

Menu buttons 1212, 1214, 1216, and 1218 are navigation buttons thatallow a user to access different parts of the user interface comprisingthe virtual garment carousel 1200. Menu button 1212 allows a user toaccess a home screen of the GUI, menu button 1214 allows a user toaccess a store page with all available garments, menu button 1216 allowsa user to access a virtual fitting room represented by fitting room1202, and menu button 1218 allows a user to customize a user profile.

In operation, a user takes a picture of him or herself through theprocess described in FIG. 4, resulting in user image 1204 for displaywithin virtual fitting room 1202. A composite image of the user wearinggarment image 1206 a can then be generated and displayed. Virtualgarment carousel 1200 may display garment images 1206 b and 1206 c tothe left and right of the composite image, respectively.

If the user decides that she does not like the composite imagepresented, or if the user simply desires to see a new composite image ofher wearing different garments, the user may issue a garment changecommand via virtual garment carousel 1200. In some embodiments, thegarment change command includes one or more of: (i) selecting one ofgarment image 1206 b or 1206 c, (ii) performing a swiping motion in theGUI, e.g., a swiping motion to the left or right across the compositeimage, and/or (iii) shaking the smart phone device displaying the userinterface (if a smart phone is being used).

In response to receiving a garment change command, garment images 1206a, 1206 b, and 1206 c are rotated (in a virtual manner) in a clockwiseor counter-clockwise fashion, based on the command. For example, if theuser issues a garment change command by swiping fitting room 1202 to theright, garment image 1206 b may take the place of garment image 1206 a,and a composite image of the user image 1204 and garment image 1206 a isdisplayed in the user interface. Alternatively, if the user issues agarment change command by shaking her smartphone to the left, garmentimage 1206 c may take the place of garment image 1206 a, and a compositeimage of the user image 1204 and garment image 1206 c is displayed inthe user interface.

In some embodiments, after a garment change command is received, virtualgarment carousel 1200 is populated with a new garment image to replacethe garment image that has rotated out of the virtual fitting room 1202.For example, if the user issues a garment change command by swipingacross the fitting room 1202 to the right, then (i) garment image 1206 bwill take the place of garment image 1206 a in the composite image, (ii)garment image 1206 a will take the place of garment image 1206 c on theright side of fitting room 1202, (iii) garment image 1206 c will rotateout of view of fitting room 1202, and (iv) virtual garment carousel 1200displays a new garment image to replace garment image 1206 b on the leftside of the virtual fitting room 1202 interface.

After examining the composite image formed from the user image andgarment image 1206 a, the user may decide that she likes garment image1206 a, but might want to change one of the other garments in thecomposite image. To change another garment in the composite image, theuser can select garment type selector 1208 and choose the type ofgarment to be changed. For example, after the user has found a desirabletop while garment type selector 1208 was set to “tops,” the user maythen select “shorts” in garment type selector 1208 to change the virtualgarment carousel to shorts. This action repopulates garment images 1206a, 1206 b, and 1206 c with garment images for “shorts.” From here, theuser can issue garment change commands to “scroll through” shorts in thevirtual garment carousel, where each new garment image of shorts issuperposed onto the composite image (comprised of the user image and thegarment image of the previously-selected top) to create a new garmentimage (comprising the user image, the garment image of thepreviously-selected top, and the garment image of the current shorts)until the user is satisfied with the resulting composite imagecomprising the user image, the garment image of the previously-selectedtop, and the garment image of the currently-selected shorts.

After the user is satisfied with the composite image, the user can savethe image to shopping bag 1210 via an outfit save command for laterpurchase. In this manner, the set of the selected top and the selectedshorts can be saved as an “outfit” for purchase, later recall, and/orsharing via social media. After saving the selected top and shorts as an“outfit,” the user can continue to scroll through other shorts, orselect different types of garments via garment type selector 1208 andcontinue to issue garment change commands to scroll through othergarments via the virtual garment carousel. The user can continue in thismanner until the user and continue to save sets of 2, 3, 4 or moregarments as “outfits” for purchase, later recall, and/or sharing viasocial media.

In some embodiments, while the user is generating an outfit withmultiple types of documents (e.g., tops, pants, jackets, and so on),different garment images may overlap with one another within thecomposite image. For example, the user may select a top that has fitpoints that overlap with the fit points of a particular pair of paints.In this scenario, virtual garment carousel 1200 superimposes the fitpoints in the garment image of the top garment on top of the fit pointsin the garment image of the pair of pants. The resulting composite imagegives the user a realistic picture of what the garments may look like incombination on the user's body. In operation, fit points in the userimage are aligned with (i) corresponding fit points in the garment imageof a first garment (e.g., an image of a top), (ii) corresponding fitpoints in the garment image of a second garment (e.g., an image of apair of pants), (iii) corresponding fit points in the garment image of athird garment (e.g., an image of a jacket), and so on. In someembodiments, garment image attributes describe layers with a compositeimage where individual garments should be displayed, e.g., a garmentimage of a jacket should be displayed on top of a garment image of atop, a garment image of a scarf should be displayed on top of a garmentimage of a jacket, and so on. In some embodiments, the user interfacepresents a user with an option for layering garments, e.g., whether atop should be tucked into pants (i.e., garment image of pants displayedon top of garment image of top) or not tucked into pants (i.e., garmentimage of top displayed on top of garment image of pants).

After achieving a desired look for an outfit, the user can share theoutfit with his or her friends via social media. In some embodiments,the user can issue an outfit share command via the graphical userinterface of virtual garment carousel 1200. The outfit share commandinvolves selecting a share button (not shown). In response to receivingthe outfit share command, virtual garment carousel 1200 then posts theoutfit on one or more social media networks.

In some embodiments, if a user's friend sees the shared outfit on socialmedia and has virtual carousel 1200 installed on a computing device, heor she may be able to select the shared outfit, resulting in virtualgarment carousel 1200 opening and displaying the outfit on the friend'sdevice. In some embodiments, on the friend's device, the user interfaceadditionally or alternatively displays a composite image of the friendwearing the same garments from the shared outfit. Because the friend'svirtual carousel application on her smartphone or other device has thefriend's measurements, the virtual carousel application can selectgarments in the friend's sizes and display a composite image of thefriend and appropriately-sized garment images of the garments from theshared outfit so that the friend can see how she would look wearing theshared outfit in her size.

FIG. 13 is a diagram showing a system 1300 for populating virtualgarment carousel 1200 with candidate garments. System 1300 includescarousel sourcing engine 1302, garment image database 1304, userattributes 1306, and virtual garment carousel 1308.

Garment image database 1304 includes candidate garments for sale orotherwise available to be displayed via the virtual garment carousel1308. Garment image database 1304 represents candidate garments that areready to be sold or will be ready to sell shortly, or are otherwiseavailable for display via the virtual garment carousel 1308.

User attributes 1306 include personal information about a particularuser. This personal information includes body measurements of the user,in-app behavior of the user, location of the user, and any userpreferences. The in-app behavior of the user includes information aboutcandidate garments the user has (1) purchased, (2) viewed, (3) shared,(4) reviewed, (5) saved for later, and (6) liked or not liked.

Virtual garment carousel 1308 contains substantially the same attributesas virtual garment carousel 1200 described with reference to FIG. 12,but also includes jackets 1308 ₁, tops 1308 ₂, pants 1308 ₃, and etc.1308 _(n). For example, the virtual carousel 1308 could be used with anytype of garment now known or later developed, including but not limitedto sweaters, accessories (earrings, necklaces, ties, scarves, etc.),shorts, skirts, belts, purses, shoes, and so on.

Carousel sourcing engine 1302 performs functions to populate virtualgarment carousel 1308 with suggested candidate garments. Carouselsourcing engine 1302 performs functions including assessing userattributes 1306, accessing the garment database 1304, performing agarment attribute correlation, calculating a correlation score,determining whether a fit index threshold is met, performing a weightingcalculation, and caching candidate garments.

Assessing user attributes 1306 includes accessing personal informationabout a particular user that the user has explicitly or implicitly madeavailable to the carousel sourcing engine 1302, either directly orindirectly. This includes information provided by the user via the userinterfaces shown and described with reference to FIGS. 1-8, informationabout the user determined by the computing system (e.g., fit points, fitindexes, etc.), information stored by the user in the virtual garmentcarousel 1308 (e.g., liked/disliked garments), information stored by theuser in the user's computing device that the user has authorized thecarousel sourcing engine 1302 to access, and/or or information from theuser's social media accounts that the user has authorized the carouselsourcing engine to access.

In one example, the user may store user attributes 1306 in the virtualgarment carousel 1308 in the form of viewing, reviewing, saving, orliking/not liking particular candidate garments. In another example, theuser may store user attributes 1306 in the user's computing device, suchas inputting a weight or height measurement into a related fitness phoneapplication. In this example, assuming the user grants the appropriatepermissions, virtual garment carousel 1308 extracts user attributes 1306from the related fitness phone application. In another example, the usermay share particular outfits from virtual garment carousel 1308 onvarious social media accounts. In this example, accessing userattributes 1306 includes extracting sharing and posting information fromthe various social media accounts.

Performing the garment attribute correlation includes correlating userattributes 1306 to garment attributes of the garments stored in garmentdatabase 1308. The garment attributes include one or more of (i) howoften a stylist has recommended a candidate garment to other users, (ii)how many other users have purchased the candidate garment, (iii) howmany other users have liked the candidate garment via social media, (iv)how often other users have shared composite images comprising thecandidate garment via social media, (v) how many friends of the userhave purchased the candidate garment, (vi) how often friends of the userhave liked the candidate garment via social media, (vii) how oftenfriends of the user have shared composite images comprising thecandidate garment via social media, and (viii) a fit index thatquantifies a degree to which the candidate garment fits the user.

In some embodiments, performing the garment attribute correlation mayadditionally include correlating candidate garments from garmentdatabase 1308 with a second garment the user has already saved invirtual garment carousel 1308. The candidate garment's relationship tothe second garment includes one or more of: (i) how often a stylist hasrecommended a candidate garment in combination with the second garment,(ii) how many other users have purchased both the candidate garment andthe second garment, (iii) how often other users have shared imagesshowing the candidate garment with the second garment via social media,(iv) how often other users have liked images showing the candidategarment with the second garment via social media, (v) how many friendsof the user have purchased both the candidate garment and the secondgarment, (vi) how often friends of the user have shared images showingthe candidate garment with the second garment via social media, (vii)how often friends of the user have liked images showing the candidategarment with the second garment via social media, and (viii) a compositefit index that quantifies a degree to which both the candidate garmentand the second garment fit the user.

Calculating a correlation score is accomplished in some embodiments byassessing the similarity of the user attributes and the garmentattributes. In some example embodiments, the correlation score is anumber between 0-10, with 10 being the highest correlation. For example,to calculate a correlation score for measurements, a computing devicedetermines how many fit points of the user's measurements and thegarment's measurements align. In another example, to calculate acorrelation score for location, a computing device determines howgeographically close the user is to a particular garment. This may beuseful because it may result in a shorter shipping time, allowing theuser to receive the garment faster.

In some embodiments, calculating the correlation score includesdetermining whether a particular garment exceeds a fit index threshold.The fit index is described in more detail with reference to FIG. 11. Inoperation, the fit index threshold requires the fit index to be above acertain number. In some example embodiments, the fit index for acandidate garment relative to the user must be greater than 8.5 forinclusion in the user's garment carousel, but lower or higher fit indexthreshold values could be used instead. In some embodiments, the fitindex threshold may be configurable by the user, based at least in parton how much importance the user places on well the user wishes his orher garments to fit. In operation, embodiments where the carouselsourcing engine 1302 imposes a fit index threshold as a criterion forplacing garments into a user's virtual garment carousel 1308 shouldpreferably limit the user's virtual garment carousel 1308 to onlygarments that have a high likelihood of fitting the user very well.

After calculating a correlation score, carousel sourcing engine 1302 mayadditionally determine whether a correlation threshold has been reached.The correlation threshold requires the correlation score to be above acertain number. In some embodiments, the correlation threshold isconfigurable by the operator of virtual garment carousel 1308 and/or theuser. In some embodiment, the correlation threshold requires acorrelation score of 8.5 or higher. A measurement correlation score of8.5 or higher suggests that the user will probably like a particulargarment and that the garment has a high likelihood of fitting the user,at least for embodiments that implement the above-described fit indexthreshold feature. After determining that the correlation threshold hasbeen reached, carousel sourcing engine 1302 then performs a weightingcalculation.

Performing the weighting calculation involves calculating a weightedscore for the garments that have exceeded correlation score threshold.In one example embodiment, performing the weighting calculation resultsin a weighted score for a garment comprised of 10% body measurements,15% stylist recommendation, 5% location, 35% in-app behavior, 30%sharing, and 5% ratings and reviews. Any possible combination ofweighted percentages may exist and the weighted percentages areconfigurable by the operator of virtual garment carousel 1308 and/or theuser.

After completing the calculations, each garment has a weighted scoreassociated with it. Carousel sourcing engine 1302 then caches the topitems for display to the user via the virtual garment carousel 1308.Virtual garment carousel 1308 imports candidate garments for displayfrom the cached items.

In operation, a user may open virtual garment carousel 1308 to browsepotential garments in the hopes of buying a new outfit. The user mayhave, in previous sessions, saved a black v-neck t-shirt, but did notultimately purchase the t-shirt. The user may be presented with threeinitial garment choices. The garment displayed on the user image may bethe black v-neck t-shirt the user had previously saved, while thegarments off to the left and right of virtual garment carousel 1308 maybe suggested garments selected via carousel sourcing engine 1302.

In some embodiments, carousel sourcing engine 1302 additionally oralternatively selects candidate garments based on one or morepersonalized garment rules for a user. The one or more personalizedgarment rules for the user include one or more of: (i) a fit indexthreshold rule that selects candidate garments having a fit index forthe user greater than the fit index threshold, (ii) a composite fitindex threshold rule that selects candidate garments that, when combinedwith the second garment, result in a composite fit index greater thanthe fit index threshold, (iii) a color rule that selects candidategarments only from a predefined set of color families, (iv) a brand rulethat selects candidate garments only from a predefined set of brands,(v) a price rule that selects candidate garments only within apredefined price range, and (vi) a fabric rule that selects candidategarments only from a predefined set of fabrics.

In some embodiments, the composite fit index threshold rule includesselecting candidate garments, that when combined with a second garment,exceed the combined fit index threshold. For example, assume a secondgarment has a fit index 8.6 and the composite fit index threshold is setto 8.5. If a composite fit index for the combination of a firstcandidate garment and the second garment would be 8.4 because of how thefirst candidate garment would fit over the second garment (or viceversa), the combination of the first candidate garment with the secondgarment would result in a composite fit index below the fit indexthreshold of 8.5, and thus, the carousel sourcing engine 1302 would notadd the first candidate garment to the user's virtual garment carousel1308. But if the composite fit index for the combination of the firstcandidate garment and the second garment would be at least 8.5 becauseof how the first candidate garment would fit over the second garment (orvice versa), then the carousel sourcing engine 1302 would might add thefirst candidate garment to the user's virtual garment carousel 1308(assuming other criteria are met).

In some embodiments, applying the color rule involves only selectingcandidate garments that harmonize with a particular color or set ofcolors. In some embodiments, the color rule is set by style guidelines.For example, assume a user has red hair and fair skin. In this example,it may be advantageous to avoid colors that clash with red hair, such asorange or yellow. The color rule may also be set by a user based onpersonal preference. For example, if a user dislikes the color purple,it would be advantageous to avoid sending that user garments thatincorporate purple because there is a low likelihood that the user willlike the garment, and thus, a low likelihood of a successful sale.

In some embodiments, applying the brand rule involves only selectingcandidate garments from a predefined set of brands. In some embodiments,the brand rule is set by a user based on brand preference. For example,if a user has decided that she likes clothes from designer_(X), she mayset a brand rule so that she only receives candidate garments fromdesigner_(X). Similarly, if the user has decided that she does not likeclothes from designer_(Y), then she may set a brand rule to excludecandidate garments from designer_(Y).

In some embodiments, applying the price rule involves only selectingcandidate garments that fall within a specified price range. Forexample, the user may be searching for an inexpensive top to wear duringa music festival. In this example, the user may set the price range forthe top to $15-$30. The lower range and upper range may both beconfigurable by the user to allow for any number of discrete ranges.

In some embodiments, applying the fabric rule involves only selectingcandidate garments from a predefined set of fabrics. In someembodiments, the fabric rule is set by a user based on fabricpreference. Additionally or alternatively, in some embodiments, thefabric rule is set based on style guidelines. For example, if a user hasdecided that she prefers polyester fabrics to cotton fabrics, she mayset a fabric rule so that she only receives candidate garments in whichpolyester is the main fabric. Similarly, if the user has decided thatshe dislikes wool clothing, then she may set a fabric rule to excludewool garments from the set of candidate garments.

In some embodiments, after a set of candidate garments has been selectedvia the one or more personalized garment rules for a user, one or morestyle rules may then be applied to further narrow the candidate garmentsto a subset of garments for storage in and/or display via the virtualgarment carousel. In some embodiments, the one or more style rules forthe user include one or more of (i) a color clash rule that selects asubset of garments only from a predefined set of garments that do notconflict with a color attribute of the user, and (ii) a fit clash rulethat selects a subset of garments only from a predefined set of garmentsthat do not conflict with a fit attribute of the user.

In some embodiments, applying the color clash rule involves selecting asubset of garments that do not conflict with a color attribute of theuser. Color attributes of the user may involve skin color, hair color,or eye color. Other color attributes may be defined, too. For example,as discussed previously, a user may have red hair, which may be enteredby the user into the user's profile. In this example, it may beadvantageous to select clothing that will not clash with the user's redhair. In applying the color clash rule, carousel sourcing engine 1302may exclude candidate garments that clash with the user's red hair. Thisrule may rely on input from stylists or general aesthetic guidelines.

In some embodiments, applying the fit clash rule involves selecting asubset of garments that do not conflict with a fit attribute of theuser. Fit attributes include body shape, weight, or specificmeasurements. For example, if a user is overweight, it may beadvantageous to select candidate garments that are not tight-fitting,even if the fit index threshold is satisfied. Fit clash rules may bedefined by style guidelines defined by and/or received from one or morestylists.

In some embodiments, the carousel sourcing engine 1302 may additionallyor alternatively selects candidate garments based on a user's activitydata. User activity data includes how often a user accesses virtualgarment carousel 1308, such as how often on a daily, weekly, or monthlybasis that the user interacts with the virtual garment carousel. Othertime periods may be set, too. In operation, candidate garments areselected or refreshed more frequently for a user that accesses virtualgarment carousel 1308 daily, while candidate garments are selected orrefreshed less frequently for a user that accesses virtual garmentcarousel 1308 monthly. This may be advantageous because a user thataccesses virtual garment carousel 1308 may desire more updated looksbased on trends, while a user that accesses virtual garment carousel1308 monthly may desire looks that focus on fit or another attributeother than updated trends.

In some embodiments, user activity data additionally or alternativelyincludes a user's shopping data. For example, if a user has purchasedparticular types of garments previously, it may be advantageous forvirtual garment carousel 1308 to display similar types of garments tothe user, because the user may be more likely to like and/or purchasethat type of garment. Specifically, if a user has previously purchasedhalter tops via virtual garment carousel 1308 or through another websitein which virtual garment carousel 1308 communicates, virtual garmentcarousel 1308 may select candidate garments that are substantiallysimilar to halter tops. This information is particularly useful indeveloping purchasing trends for a particular user.

In some embodiments, after identifying a set of candidate garments,virtual garment carousel 1308 additionally prioritizes some candidategarments over others based on one or more of (i) a fit index rule thatprioritizes candidate garments with a higher fit index for the user overcandidate garments with a lower fit index for the user, (ii) a compositefit index rule that prioritizes candidate garments that result in ahigher composite fix index for the user when combined with the secondgarment over candidate garments that result in a lower composite fixindex for the user when combined with the second garment, (iii) a colorrule that prioritizes candidate garments of certain colors, (iv) a brandrule that prioritizes candidate garments from certain brands overcandidate garments from other brands; (v) a price rule that prioritizescandidate garments within a price range over candidate garments outsideof the price range for the user; and (vi) a fabric rule that prioritizescandidate garments made from certain fabrics.

In some embodiments, prioritization includes choosing to displaycandidate garments that have a higher fit index first, while displayingcandidate garments with a lower fit index later.

In some embodiments, prioritization includes choosing to displaycandidate garments that relate to a specific color first, whiledisplaying candidate garments relating to other colors later.

In some embodiments, prioritization includes choosing to displaycandidate garments from a certain brand first, while displayingcandidate garments relating to other brands later.

In some embodiments, prioritization includes choosing to displaycandidate garments in a user-specified price range first, whiledisplaying candidate garments that fall outside of the user-specifiedprice range later.

In some embodiments, prioritization includes choosing to displaycandidate garments made of a user-specified fabric first, whiledisplaying candidate garments made of other fabrics later.

Any one or more (or all) of the above methods of prioritization may beused to select and present candidate garments to the user via virtualgarment carousel 1308.

FIG. 14 is a flow chart of a method, according to some embodiments. Insome embodiments, the method illustrated by FIG. 14 is implemented byone or more computing devices, individually or in combination. Forexample, in some embodiments, one or more steps (or all the steps) couldbe performed by a server system, cloud based system, or othercentralized computing system. Alternatively, one or more steps (or allthe steps) could be performed by a client device, such as a smart phone,tablet, laptop computer, or other computing device. Further, some stepscould be performed by a server system, cloud based system, or othercentralized computing system, and other steps could be performed by aclient device, such as a smart phone, tablet, laptop computer, or othercomputing device.

Block 1400 includes generating a first virtual garment carousel for auser. In some embodiments, the first virtual garment carousel includes aplurality of garment images of a first type of garment.

In some embodiments, the first virtual garment carousel includes atleast one garment image corresponding to a garment that the user haspreviously (i) saved in the first virtual garment carousel or (ii)purchased.

In some embodiments, generating the first virtual garment carouseladditionally or alternatively includes selecting a set of garments forthe first virtual garment carousel from a plurality of candidategarments based at least in part on one or more garment attributes ofeach candidate garment in the plurality of candidate garments, andstoring at least one garment image for each garment in the selected setof garments in the first virtual garment carousel.

In some embodiments, the garment attributes of the plurality ofcandidate garments include one or more of: (i) how often a stylist hasrecommended a candidate garment to other users, (ii) how many otherusers have purchased the candidate garment, (iii) how many other usershave liked the candidate garment via social media, (iv) how often otherusers have shared composite images comprising the candidate garment viasocial media, (v) how many friends of the user (i.e., social mediafriends, contacts, etc.) have purchased the candidate garment, (vi) howoften friends of the user have liked (i.e., registered a social media“like” or similar designation) the candidate garment via social media,(vii) how often friends of the user have shared composite imagescomprising the candidate garment via social media, and (viii) a fitindex that quantifies a degree to which the candidate garment fits theuser.

In some embodiments, generating the first garment carousel includesselecting a set of garments for the first virtual garment carousel froma plurality of candidate garments based at least in part on eachcandidate garment's relationship to the second garment, and storing atleast one garment image for each garment in the selected set of garmentsin the first virtual garment carousel.

In some embodiments, each candidate garment's relationship to the secondgarment includes one or more of: (i) how often a stylist has recommendeda candidate garment in combination with the second garment, (ii) howmany other users have purchased both the candidate garment and thesecond garment, (iii) how often other users have shared images showingthe candidate garment with the second garment via social media, (iv) howoften other users have liked images showing the candidate garment withthe second garment via social media, (v) how many friends of the userhave purchased both the candidate garment and the second garment, (vi)how often friends of the user have shared images showing the candidategarment with the second garment via social media, (vii) how oftenfriends of the user have liked images showing the candidate garment withthe second garment via social media, and (viii) a composite fit indexthat quantifies a degree to which both the candidate garment and thesecond garment fit the user.

In some embodiments, generating the first virtual garment carouselincludes selecting a set of garments for the first virtual garmentcarousel from a plurality of candidate garments based at least in parton one or more personalized garment rules for the user, and storing atleast one garment image for each garment in the selected set of garmentsin the first virtual garment carousel.

In some embodiments, the one or more personalized garment rules for theuser include one or more of: (i) a fit index threshold rule that selectscandidate garments having a fit index for the user greater than apredefined fit index threshold, (ii) a composite fit index thresholdrule that selects candidate garments that, when combined with the secondgarment, result in a composite fit index greater than a predefinedcomposite fit index threshold, (iii) a color rule that selects candidategarments only from a predefined set of color families, (iv) a brand rulethat selects candidate garments only from a predefined set of brands,(v) a price rule that selects candidate garments only within apredefined price range, and (vi) a fabric rule that selects candidategarments made only from a predefined set of fabrics.

In some embodiments, generating the virtual garment carousel furtherincludes selecting, from the set of garments based at least in part onthe one or more personalized garment rules for the user, a subset ofgarments based at least in part on one or more style rules for the user,and storing at least one garment image for each garment in the selectedsubset of garments in the first virtual garment carousel.

In some embodiments, the one or more style rules for the user compriseone or more of: (i) a color clash rule that selects a subset of garmentsonly from a predefined set of garments that do not conflict with a colorattribute of the user, and (ii) a fit clash rule that selects a subsetof garments only from a predefined set of garments that do not conflictwith a fit attribute of the user.

In some embodiments, generating the first virtual garment carousel forthe user further includes prioritizing garments in the first virtualgarment carousel for the user based on one or more of: (i) a fit indexrule that prioritizes candidate garments with a higher fit index for theuser over candidate garments with a lower fit index for the user, (ii) acomposite fit index rule that prioritizes candidate garments that resultin a higher composite fix index for the user when combined with thesecond garment over candidate garments that result in a lower compositefix index for the user when combined with the second garment, (iii) acolor rule that prioritizes candidate garments of certain colors, (iv) abrand rule that prioritizes candidate garments from certain brands overcandidate garments from other brands; (v) a price rule that prioritizescandidate garments within a price range over candidate garments outsideof the price range for the user; and (vi) a fabric rule that prioritizescandidate garments made from certain fabrics.

In some embodiments, generating the first virtual garment carouselincludes selecting a set of garments for the first virtual garmentcarousel from a plurality of candidate garments based at least in parton one or more location rules. The location rules select candidategarments based on trends where the user is located or another locationbased on a user's search history or other data shared with the carouselsourcing engine (FIG. 13). For example, if the user lives in Dallas,Tex., the carousel sourcing engine may select garments consistent withstyles in Dallas, Tex., (perhaps based on styles trending among otherusers in Dallas, Tex.) over styles trending in New York, N.Y., forexample. Similarly, assuming the user has granted the carousel sourcingengine appropriate permissions, the sourcing engine may select garmentsconsistent with styles in Venice, Italy (rather than Dallas, Tex.) ifother data (e.g., calendar data, browser data, email data, etc.)indicates the user is planning to take a vacation to Venice, Italy.

In some embodiments, generating the first virtual garment carousel alsoincludes storing at least one garment image for each garment in theselected set of garments in the first virtual garment carousel.

In some embodiments, generating the first virtual garment carouseladditionally or alternatively includes selecting a set of garments forthe first virtual garment carousel from a plurality of candidategarments based at least in part on rules relating to a user's activitydata. The user's activity data includes daily, weekly, and monthlyactivity, such as how often the user has interacted with the virtualcarousel over the last day, week, and/or month. The rules relating tothe user's activity data refreshes candidate garments in the virtualcarousel more frequently for users with daily activity, less frequentlyfor users with weekly activity, and least frequently for users withmonthly activity.

In some embodiments, generating the first virtual garment carouseladditionally or alternatively includes selecting a set of garments forthe first virtual garment carousel from a plurality of candidategarments based at least in part on rules relating to a user's activity.In some embodiments, the user's activity includes a user's shoppingdata. In some embodiments, the carousel sourcing engine (FIG. 13) usesrules relating to the user's activity to select candidate garmentscorresponding to or otherwise related to the user's shopping data.

Block 1402 includes generating a first composite image of the userwearing a first outfit comprising a first garment and a second garment.The first composite image includes a user image, a first garment image,and a second garment image. The first garment image is a garment imagein the first virtual garment carousel. The second garment image is animage of a second type of garment. In the composite image, garment fitpoints in the first and second garment images align with correspondingfit points in the user image.

In some embodiments, the second garment image is a garment image from asecond virtual garment carousel. The second virtual garment carouselincludes a plurality of garment images of the second type of garment.

Block 1404 includes displaying the first composite image in a graphicaluser interface.

Block 1406 includes receiving a garment change command via the graphicaluser interface to change from the first garment image to a next garmentimage in the first virtual garment carousel. The garment change commandmay include a swipe, an icon selection, shaking a smart phone, or anyother user input that causes the virtual garment carousel to advance thecarousel to a next garment.

Block 1408 includes, in response to receiving the garment changecommand, generating a second composite image of the user wearing asecond outfit comprising the second garment and a third garment. Thesecond composite image includes the user image, the second garmentimage, and a third garment image. The third garment image is the nextgarment image in the first virtual garment carousel, and garment fitpoints of the second and third garment images align with correspondingfit points in the user image.

In some embodiments, the graphical user interface, before receiving thegarment change command, displays the third garment image separately fromthe first composite image of the first virtual garment carousel toprovide a preview to the user, and wherein the graphical user interface,after receiving the garment change command, displays the first garmentimage separately from the second composite image of the first virtualgarment carousel to provide a previous view to the user and displays afourth garment image separately from the second composite image of thefirst virtual garment carousel to provide a preview to the user.

Block 1410 includes displaying the second composite image in thegraphical user interface.

Some embodiments further include receiving an outfit save command fromthe user via the graphical user interface, and in response to receivingthe outfit save command, saving at least the second composite image ofthe user wearing the second outfit in the tangible, non-transitorycomputer-readable media.

Some embodiments further include receiving an outfit share command fromthe user via the graphical user interface, and in response to receivingthe outfit share command, sharing the second composite image of the userwearing the second outfit comprising the first garment and the thirdgarment via one or more social media networks.

Some embodiments have been described with reference to particularfeatures and functions. In view of the disclosure herein, it will beapparent to those skilled in the art that various modifications andvariations can be made to the embodiments disclosed and described hereinwithout departing from the scope or spirit of the invention(s) and theexample embodiments thereof disclosed and described herein. One skilledin the art will recognize that the disclosed features and functions maybe used singularly, in any combination, or omitted based on therequirements and specifications of a given application or design.

We claim:
 1. Tangible, non-transitory computer-readable media comprisinginstructions encoded therein, wherein the instructions, when executed byone or more processors, cause a computing system to perform a methodcomprising: generating a first virtual garment carousel for a user,wherein the first virtual garment carousel comprises a plurality ofgarment images of a first type of garment; generating a first compositeimage of the user wearing a first outfit comprising a first garment anda second garment, wherein the first composite image comprises a userimage, a first garment image, and a second garment image, wherein thefirst garment image is a garment image in the first virtual garmentcarousel, wherein the second garment image is an image of a second typeof garment, and wherein garment fit points in the first and secondgarment images align with corresponding fit points in the user image;displaying the first composite image in a graphical user interface;receiving a garment change command via the graphical user interface tochange from the first garment image to a next garment image in the firstvirtual garment carousel; in response to receiving the garment changecommand, generating a second composite image of the user wearing asecond outfit comprising the second garment and a third garment, whereinthe second composite image comprises the user image, the second garmentimage, and a third garment image, wherein the third garment image is thenext garment image in the first virtual garment carousel, and whereingarment fit points of the second and third garment images align withcorresponding fit points in the user image; and displaying the secondcomposite image in the graphical user interface.
 2. The tangible,non-transitory computer-readable media of claim 1, wherein at least somefit points in the first garment image align with at least some fitpoints in the second garment image, and wherein at least some fit pointsin the third garment image align with at least some fit points in thesecond garment image.
 3. The tangible, non-transitory computer-readablemedia of claim 1, wherein the second garment image is a garment imagefrom a second virtual garment carousel, wherein the second virtualgarment carousel comprises a plurality of garment images of the secondtype of garment.
 4. The tangible, non-transitory computer-readable mediaof claim 1, wherein the first virtual garment carousel comprises atleast one garment image corresponding to a garment that the user haspreviously (i) saved in the first virtual garment carousel or (ii)purchased.
 5. The tangible, non-transitory computer-readable media ofclaim 1, wherein generating the first virtual garment carousel for auser comprises: selecting a set of garments for the first virtualgarment carousel from a plurality of candidate garments based at leastin part on one or more garment attributes of each candidate garment inthe plurality of candidate garments; and storing at least one garmentimage for each garment in the selected set of garments in the firstvirtual garment carousel.
 6. The tangible, non-transitorycomputer-readable media of claim 5, wherein the garment attributes ofthe plurality of candidate garments comprise one or more of: (i) howoften a stylist has recommended a candidate garment to other users, (ii)how many other users have purchased the candidate garment, (iii) howmany other users have liked the candidate garment via social media, (iv)how often other users have shared composite images comprising thecandidate garment via social media, (v) how many friends of the userhave purchased the candidate garment, (vi) how often friends of the userhave liked the candidate garment via social media, (vii) how oftenfriends of the user have shared composite images comprising thecandidate garment via social media, and (viii) a fit index thatquantifies a degree to which the candidate garment fits the user.
 7. Thetangible, non-transitory computer-readable media of claim 1, whereingenerating the first virtual garment carousel for a user comprises:selecting a set of garments for the first virtual garment carousel froma plurality of candidate garments based at least in part on eachcandidate garment's relationship to the second garment; and storing atleast one garment image for each garment in the selected set of garmentsin the first virtual garment carousel.
 8. The tangible, non-transitorycomputer-readable media of claim 7, wherein each candidate garment'srelationship to the second garment comprises one or more of: (i) howoften a stylist has recommended a candidate garment in combination withthe second garment, (ii) how many other users have purchased both thecandidate garment and the second garment, (iii) how often other usershave shared images showing the candidate garment with the second garmentvia social media, (iv) how often other users have liked images showingthe candidate garment with the second garment via social media, (v) howmany friends of the user have purchased both the candidate garment andthe second garment, (vi) how often friends of the user have sharedimages showing the candidate garment with the second garment via socialmedia, (vii) how often friends of the user have liked images showing thecandidate garment with the second garment via social media, and (viii) acomposite fit index that quantifies a degree to which both the candidategarment and the second garment fit the user.
 9. The tangible,non-transitory computer-readable media of claim 1, wherein generatingthe first virtual garment carousel for a user comprises: selecting a setof garments for the first virtual garment carousel from a plurality ofcandidate garments based at least in part on one or more personalizedgarment rules for the user; and storing at least one garment image foreach garment in the selected set of garments in the first virtualgarment carousel.
 10. The tangible, non-transitory computer-readablemedia of claim 9, wherein the one or more personalized garment rules forthe user comprises one or more of: (i) a fit index threshold rule thatselects candidate garments having a fit index for the user greater thana predefined fit index threshold, (ii) a composite fit index thresholdrule that selects candidate garments that, when combined with the secondgarment, result in a composite fit index greater than a predefinedcomposite fit index threshold, (iii) a color rule that selects candidategarments only from a predefined set of color families, (iv) a brand rulethat selects candidate garments only from a predefined set of brands,and (v) a price rule that selects candidate garments only within apredefined price range.
 11. The tangible, non-transitorycomputer-readable media of claim 10, wherein generating the firstvirtual garment carousel for a user further comprises: selecting, fromthe set of garments based at least in part on the one or morepersonalized garment rules for the user, a subset of garments based atleast in part on one or more style rules for the user; and storing atleast one garment image for each garment in the selected subset ofgarments in the first virtual garment carousel.
 12. The tangible,non-transitory computer-readable media of claim 11, wherein the one ormore style rules for the user comprise one or more of: (i) a color clashrule that selects subset garments only from a predefined set of garmentsthat do not conflict with a color attribute of the user, and (ii) a fitclash rule that selects subset garments only from a predefined set ofgarments that do not conflict with a fit attribute of the user.
 13. Thetangible, non-transitory computer-readable media of claim 1, whereingenerating the first virtual garment carousel for the user comprises:prioritizing garments in the first virtual garment carousel for the userbased on one or more of: (i) a fit index rule that prioritizes candidategarments with a higher fit index for the user over candidate garmentswith a lower fit index for the user, (ii) a composite fit index rulethat prioritizes candidate garments that result in a higher compositefix index for the user when combined with the second garment overcandidate garments that result in a lower composite fix index for theuser when combined with the second garment, (iii) a color rule thatprioritizes candidate garments of certain colors, (iv) a brand rule thatprioritizes candidate garments from certain brands over candidategarments from other brands, and (v) a price rule that prioritizescandidate garments within a price range over candidate garments outsideof the price range for the user.
 14. The tangible, non-transitorycomputer-readable media of claim 1, wherein the method furthercomprises: receiving an outfit save command from the user via thegraphical user interface; and in response to receiving the outfit savecommand, saving at least the second composite image of the user wearingthe second outfit in the tangible, non-transitory computer-readablemedia.
 15. The tangible, non-transitory computer-readable media of claim1, wherein the method further comprises: receiving an outfit sharecommand from the user via the graphical user interface; and in responseto receiving the outfit share command, sharing the second compositeimage of the user wearing the second outfit comprising the first garmentand the third garment via one or more social media networks.
 16. Thetangible, non-transitory computer-readable media of claim 1, wherein thegraphical user interface, before receiving the garment change command,displays the third garment image separately from the first compositeimage of the first virtual garment carousel to provide a preview to theuser, and wherein the graphical user interface, after receiving thegarment change command, displays the first garment image separately fromthe second composite image of the first virtual garment carousel toprovide a previous view to the user and displays a fourth garment imageseparately from the second composite image of the first virtual garmentcarousel to provide a preview to the user.
 17. The tangible,non-transitory computer-readable media of claim 1, wherein generatingthe first virtual garment carousel for the user comprises: selecting aset of garments for the first virtual garment carousel from a pluralityof candidate garments based at least in part on one or more locationrules, wherein the location rules select candidate garments based ontrends where the user is located or another location based on a user'ssearch history; and storing at least one garment image for each garmentin the selected set of garments in the first virtual garment carousel.18. The tangible, non-transitory computer-readable media of claim 1,wherein generating the first virtual garment carousel for the usercomprises: selecting a set of garments for the first virtual garmentcarousel from a plurality of candidate garments based at least in parton rules relating to a user's activity data, wherein the user's activitydata comprises daily, weekly, and monthly activity, and wherein therules relating to the user's activity data refresh candidate garmentsmost frequently for users with daily activity, less frequently for userswith weekly activity, and least frequently for users with monthlyactivity; and storing at least one garment image for each garment in theselected set of garments in the first virtual garment carousel.
 19. Thetangible, non-transitory computer-readable media of claim 1, whereingenerating the first virtual garment carousel for the user comprises:selecting a set of garments for the first virtual garment carousel froma plurality of candidate garments based at least in part on rulesrelating to a user's activity, wherein the user's activity comprises auser's shopping data, and wherein the rules relating to the user'sactivity select candidate garments corresponding to the user's shoppingdata; and storing at least one garment image for each garment in theselected set of garments in the first virtual garment carousel.